home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / info / rtnews / rtnv6n3 < prev    next >
Encoding:
Text File  |  1994-10-16  |  112.9 KB  |  2,653 lines

  1.  _ __                 ______                         _ __
  2. ' )  )                  /                           ' )  )
  3.  /--' __.  __  ,     --/ __  __.  _. o ____  _,      /  / _  , , , _
  4. /  \_(_/|_/ (_/_    (_/ / (_(_/|_(__<_/ / <_(_)_    /  (_</_(_(_/_/_)_
  5.          /                               /|
  6.         '                               |/
  7.  
  8.             "Light Makes Right"
  9.  
  10.             September 28, 1993
  11.             Volume 6, Number 3
  12.  
  13. Compiled by Eric Haines, 3D/Eye Inc, 2359 Triphammer Rd, Ithaca, NY 14850
  14.     erich@eye.com
  15. All contents are copyright (c) 1993 by the individual authors
  16. Archive locations: anonymous FTP at princeton.edu (128.112.128.1)
  17.     /pub/Graphics/RTNews, wuarchive.wustl.edu:/graphics/graphics/RTNews,
  18.     and many others.
  19.  
  20. Contents:
  21.     Introduction
  22.     New People
  23.     Ray Tracing Roundup
  24.     Free Ray Tracer Summary, compiled by Eric Haines
  25.     Ray Tracer Races, Round 2, by Eric Haines
  26.     An Enhanced Standard Procedural Databases Package, by Eric Haines
  27.     Shadows from Refractive Objects, by Steven Collins
  28.     Shadows Through Transmitters, by Eric Haines, Greg Ward,
  29.         Alexander Enzmann, Stephen Coy, and David Hook
  30.     Faster Bounding Volume Hierarchies, by Brian Smits and Eric Haines
  31.     Simple Sun Position Program, by James Ashton
  32.     Sphere and Cylinder/Cone/Disc/Annulus Definition, by Eric Haines
  33.     Ray Tracing Roundup
  34.     Simple Sphere Tessellation, by Mike Castle
  35.     Syndesis CD-ROM Review, by Eric Haines
  36.     Ray Tracing Related Abstracts from the Proceedings of
  37.         Graphics Interface '93
  38.     Ray Tracing Papers in the First Bilkent Computer Graphics Conference,
  39.         ATARV-93, Ankara, Turkey, July 1993
  40.     Fourth Eurographics Workshop on Rendering, Paris, France June 14-16, by
  41.         Francois Sillion
  42.     Gamma Correction Frequently Asked Questions, by Graeme Gill
  43.     3D Studio Rendering, by Chris Williams
  44.     Ray-Bezier Patch Intersection, by Chuck McKinley, Max Froumentin
  45.     Turbulence and Noise, by Ken Perlin
  46.     Ray Tracing Research Ideas, by Klaus Lisberg Kristensen
  47.         & Christian Gautier
  48.     POV-Ray Utilities, by Dan Farmer
  49.     SPD Platform/Compiler Results, by David Hook
  50.  
  51. -------------------------------------------------------------------------------
  52.  
  53. Introduction
  54.  
  55. Another SIGGRAPH has come and gone, and it was pretty fun for me from a Ray
  56. Tracing News perspective.  I got to meet some of the creators of POV, the ray
  57. tracer derived from DKB that's been taking the CompuServe (CIS for short)
  58. world by storm.  The CIS world is a different kind of place than the Internet.
  59. There be demigods there that can give you various free privileges if they
  60. deign that what you are doing is entertaining to the masses (and so generates
  61. connect time revenues).
  62.  
  63. The ray tracing technology available on CIS seems a bit old-fashioned, with
  64. things like QRT and DBW still in active existence there and in the general BBS
  65. world among some users.  POV 1.0 doesn't have an automatic efficiency scheme,
  66. something that dates back at least five years with MTV's introduction on the
  67. Internet.  However, I suspect POV 2.0 and onwards will rule the earth.  2.0
  68. has a built in efficiency scheme, and while most of the other free ray tracers
  69. out there are still faster, this scheme at least brings POV into the same
  70. league.  What will make POV the most popular free renderer is that there are a
  71. ton of utilities out there to support it [see Dan Farmer's article this
  72. issue].  One of the most significant is MORAY, a shareware modeling and scene
  73. composition program that's very nice (available only on the IBM PC).
  74.  
  75. Right now Rayshade has more features than POV and is faster, and there are
  76. some programs which output data in Rayshade format, so it's got many users.
  77. But Craig Kolb is a busy guy and there doesn't look to be any new version
  78. coming out soon.  There will still be people out there using Rayshade for its
  79. speed and for its multiprocessing utilities (e.g.  the separate Inetray
  80. utility runs Rayshade on a network of processors/machines).  Rayshade will be
  81. just fine for many people.  The "art" ray tracer from Australia has a slightly
  82. brighter future; it has many of the features of Rayshade, plus its developers
  83. have time to actively support it.
  84.  
  85. Radiance will still have its users, too - anyone dealing with lighting in a
  86. true physical sense will use this package.  Unfortunately, Greg Ward tells me
  87. that the DOE (who funded the development of Radiance) may not release newer
  88. versions for free; keep your fingers crossed.
  89.  
  90. BRLCAD has its devoted users, but takes more work than just downloading to get
  91. (you must be a US citizen, you sign some agreement, etc etc).  So even though
  92. it's free if you qualify, it's much more for the serious user and so has nil
  93. "hacker momentum".
  94.  
  95. There are some other free ray tracers out there (RTrace, VIVID/BOB, etc), each
  96. with some advantages, but in the main the large number of people using POV and
  97. creating utilities for it will make these others of peripheral interest in the
  98. long run.  90% of the utilities developed for POV might be clunky junk, but
  99. there will be enough hits (such as MORAY) that this renderer is made usable by
  100. the masses.  Whether this is good or bad or whatever, well, I don't really
  101. know, but this is my current impression of the short-term future of free ray
  102. tracing software out there.
  103.  
  104. Anyway, this is an incredibly long issue, as I finally caught up with the
  105. backlog from March onwards.  Given its length, I hope you'll take it all in
  106. (hey, use "split" and "at" and send yourself this issue in installments...).
  107. There's a summary of the features and speeds (in two separate articles) of
  108. most of the free ray tracers out there.  I've also started listing new papers
  109. that might be overlooked (i.e. weren't in SIGGRAPH).  Something for everyone,
  110. I hope (or if nothing else, at least all this stuff is organized so that I can
  111. find it again).
  112.  
  113. -------------------------------------------------------------------------------
  114.  
  115. New People
  116.  
  117. # J. Eric Townsend - massively parallel engines, vr
  118. # NAS, NASA Ames
  119. # M/S 258-6
  120. # Moffett Field, CA 94035-1000
  121. # 415.604.4311
  122.  
  123. I'm supposed to be administrating a CM-5, but I spend as much of my time as
  124. possible working on parallel ray tracers.  My current project uses SEADS
  125. decomposition with cells distributed over the nodes.  Cells are requested
  126. asynch and cached locally.  Performance numbers coming soon.
  127.  
  128. What's the *biggest* thing you've ray traced so far in terms of sheer number
  129. of objects/size of database?
  130.  
  131. I'm (still) working on my massively parallel raytracer, but I've gotten
  132. official approval to work on it as part of my job, so I'm getting a lot done
  133. these days.  One thing I've realized, is that I'll be able to trace some
  134. *huge* numbers of objects, or at least I think it's a large number...
  135.  
  136. Right now, an sphere+surface characteristics takes up about 512bytes of
  137. storage in my system (actually, any object takes up about that much space
  138. because the Object type is just a union of all the objects I support).  Yes,
  139. that's a lot.  I haven't tried optimizing for size yet.  As I mucked about on
  140. our CM-5, I realized 'hey, I've got a *lot* of free ram for storage, even with
  141. a sizable local cache.'
  142.  
  143. Each node on our CM-5 has 2 banks of 16MB each.  Assuming one bank is taken up
  144. with OS, code, object cache, data structures, generic BS, that leaves
  145. 16MB/node for permanent object storage.  16MB*32nodes (smallest partition one
  146. can grab)/512bytes/sphere==1M (1Kx1K, actually) spheres.  Using all 128 nodes,
  147. I can easily have 4M spheres in my permanent object storage.
  148.  
  149. That's an awful lot, it seems to me.  4 million spheres is roughly
  150. equal to:
  151.  - 568 sphereflakes(4) 
  152.  - 7 sphereflakes(6)
  153.  - a single sphereflake(7) (5.3M spheres, actually).
  154.  
  155. Maybe it isn't a lot of objects. Regardless, I sat around trying to
  156. figure out how to use 4M spheres, and I came up with a few ideas:
  157.  
  158.  - particle methods run on another machine (when we get hippi going,
  159.     we could run code on one machine and trace on another)
  160.  - use spheres as voxels, try some volume ray tracing
  161.  - bad abstract animation using too many spheres
  162.  
  163. Another probability is that'll I'll try some stuff with a 'special' object
  164. that has very simple parameters:  position, pointer to an object definition
  165. and a pointer to a color index.  That'd make it *quite* easy to get another
  166. few million objects floating about in the big database.
  167.  
  168. So, am I completely off my rocker?
  169.  
  170. --------
  171.  
  172. Name:           Steven G. Blask
  173. Fancy title:    Research Associate
  174. But I'm really: PhD candidate/serf
  175.                 (will hack computer vision/graphics/image processing/AI
  176.                  under UNIX/C(++)/X Windows environment for food)
  177. Affiliation:    Robot Vision Laboratory
  178. Snail-mail:     School of Electrical Engineering
  179.                 1285 Electrical Engineering Building
  180.                 Purdue University
  181.                 West Lafayette, IN 47907-1285
  182. Voice:          (317) 494-3502
  183. FAX:            (317) 494-6440
  184. E-mail:         blask@ecn.purdue.edu
  185.  
  186. Interests:    In short, I am doing my part to get ignorant computers to
  187.         visually interpret their environment, initially for (but not
  188. limited to) robotic applications.  Specifically, I am doing expectation-based
  189. image understanding, integrating a number of related research areas into a
  190. single unified system.  I have created a B-rep solid model of the hallways
  191. outside our lab which is used as an internal map by our mobile robot.  Based
  192. on where the robot thinks it is, an expected view of the environment is
  193. rendered via a (not-yet-so-)fast ray tracing algorithm which incorporates
  194. illumination effects.
  195.  
  196. While most rendering systems are focused on obtaining pretty pictures as
  197. quickly as possible, my application must also maintain links back to the
  198. underlying solid model so that, in addition to the appearance information, the
  199. 3D geometry and topology stored in the B-rep is efficiently made available to
  200. the scene interpretation process.  This brings up many issues not normally
  201. addressed in the graphics literature which prevent me from taking advantage of
  202. some of their proposed speed-ups.  However, it has caused me to re-examine
  203. some of the "solved" problems of computer graphics from a new perspective,
  204. which has yielded much dissertation fodder, and has allowed me to propose new
  205. speed-ups based on a slightly modified architecture.
  206.  
  207. Related non-graphics areas I have addressed include:  low level image
  208. processing to remove noise from digitized images or enhance rendered images;
  209. robust segmentation and symbolic conversion of digitized greyscale video
  210. images and distance images produced by a range sensor; integration of these
  211. symbolic conversion routines into the solid modeler/sensor modeler/ray tracer
  212. which also has facilities for the interactive construction, examination, and
  213. modification of objects; an evidential reasoning scheme that organizes and
  214. utilizes the rich structural and appearance information in an efficient manner
  215. during the image understanding process.  Artificial intelligence techniques
  216. such as evidence accumulation, uncertainty management, and symbolic reasoning
  217. must be utilized since there is a huge amount of input data and it will be
  218. noisy, the expectation will not be exact due to errors in mobile robot
  219. odometry (indeed, vision is intended to be its position updating mechanism),
  220. and it is impractical or impossible to completely or accurately model all of
  221. the environment and its many aspects.  By processing both expected and
  222. observed scenes with the same greyscale or range image segmentation routines,
  223. the integrated system can predict the detectability of various structural
  224. features and appearance artifacts, and determine their usefulness w.r.t. the
  225. image interpretation process.
  226.  
  227. Obviously, I have taken a big bite out of a large apple, so please excuse me
  228. if I talk with my mouth full :-) I hope this tome makes the ray-tracing
  229. community more aware of the vast usefulness of this rendering paradigm to
  230. those who would do model-based interpretation of video and range sensor
  231. images.  Ray tracing is a natural fit for my particular application since it
  232. tells me what object I hit, how far away it is, and what ``color'' it is.
  233. Computer vision & computer graphics are two sides of the same coin, and it is
  234. once again time to flip it over & see if the other guy has solved your problem
  235. yet.  It is also probably time for the two communities to start working on an
  236. integrated modeling system that can drive the image formation/generation
  237. process both ways.  I was forced to implement the aforementioned system myself
  238. since I could find no existing system that gave me the access I needed in
  239. order to efficiently integrate everything that needs to be done.
  240.  
  241. Sorry this is so long, but I thought you might find it interesting and
  242. possibly motivating.  I encourage anyone interested in the further development
  243. of an integrated vision/graphics system to contact me.  I am racing to defend
  244. my dissertation by December, so I may be slow to respond until then.
  245.  
  246. P.S.    I am obliged to say that Purdue Robot Vision Lab is a diverse group of
  247.     researchers investigating all aspects of sensory-based robotics,
  248.     including:  planning for sensing, robot motion, grasping, and
  249.     assembly; object and sensor modeling; computer vision; image
  250.     processing; range data processing; object recognition; symbolic and
  251.     geometric reasoning; uncertainty management and evidence accumulation;
  252.     learning.  Smart, aware, easy-to-program robots are our goal.  Prof.
  253.     Avinash C. Kak is our fearless leader.
  254.  
  255. -------------------------------------------------------------------------------
  256.  
  257. Free Ray Tracer Summary, compiled by Eric Haines
  258.  
  259. Here are some of the better ray tracers out there (and most can be found at
  260. wuarchive.wustl.edu in graphics/graphics somewhere, or ask me):
  261.  
  262. RayShade - a great ray tracer for workstations on up, also for PC, Mac & Amiga.
  263. POV - son and successor to DKB trace, written by Compuservers.  Also see PV3D.
  264.     (For more questions call Drew Wells --
  265.     73767.1244@compuserve.com or Dave Buck -- david_buck@carleton.ca)
  266. Radiance - see "Radiosity", below.  A very physically based ray tracer.
  267. ART - ray tracer with a good range of surface types, part of VORT package.
  268. RTrace - Portugese ray tracer, does bicubic patches, CSG, 3D text, etc. etc.
  269.     An MS-DOS version for use with DJGPP DOS extender (GO32) exists also,
  270.     as well as a Mac port.
  271. VIVID2 - A shareware raytracer for PCs - binary only (286/287).  Author:
  272.     Stephen Coy (coy@ssc-vax.boeing.com).  The 386/387 (no source) version
  273.     is available to registered users (US$50) direct from the author.
  274.     "Bob" is a subset of this ray tracer, source available only through
  275.     disks in "Photorealism and Raytracing in C" by Christopher Watkins
  276.     et al, M&T Books.
  277.  
  278. Which one's the best?  Here's a ray tracer feature comparison of some of the
  279. more popular ones.  I assume some basics, like each can run on a Unix
  280. workstation, can render a polygon, has point lights, highlighting, reflection
  281. & refraction, etc.
  282.  
  283. A "." means "no".  Things in parentheses mean "no, but there's a workaround".
  284. For example, POV 1.0 has no efficiency scheme so takes forever on scenes with
  285. lots of objects, but there are programs which can generate efficiency
  286. structures for some POV objects (also, in this case, POV 2.0 will fix this
  287. deficiency).
  288.  
  289.                        Rayshade  POV 1.0  RTrace  Radiance     Bob       ART
  290. IBM PC version?            Y        Y       Y      in 2.2       Y         Y
  291. Amiga version?             Y        Y       .         Y         .        (Y)
  292. Mac version?               Y        Y       Y       A/UX        .         Y
  293.  
  294. Sphere/Cylinder/Cone       Y        Y       Y         Y         Y         Y
  295. Torus primitive            Y        Y       Y         .         .         Y
  296. Spline surface prim.       .        Y       Y         .         .         Y
  297. Arbitrary Algebraic prim.  .        Y       .         .         .         Y
  298. Heightfield primitive      Y        Y       .         .         .         Y
  299. Metaball primitive         Y        Y       .         .         .         Y
  300. Modeling matrices          Y        Y       Y         .         .         Y
  301. Constructive Solid Geo.    Y        Y       Y   (antimatter) (clipping)   Y
  302. Efficiency scheme?       grids  (user/2.0) ABVH    octtree     ABVH    kdtree+
  303.  
  304. 2D texture mapping         Y        Y       Y         Y         Y         Y
  305. 3D solid textures          Y      strong    Y         Y         Y         Y
  306. Advanced local shading     .        Y       Y       Much!       .         .
  307. Atmospheric effects        Y        Y       .         .         Y         Y
  308. Radiosity effects          .        .       Y         Y         .         .
  309. Soft shadows               Y      (2.0)     Y         Y         Y         Y
  310. Motion blur                Y        .       .         .         .         .
  311. Depth of field effects     Y        .       Y         .         Y         .
  312. Stereo pair support        Y        .       Y         .         .         .
  313. Advanced filter/sample       Y        .       Y         Y         Y         .
  314. Animation support          Y      (S/W)     Y      (some)       .         Y
  315. Alpha channel output       Y        .       Y         .         .         Y
  316.  
  317. Modeler                 lib/P3D   IBM+  (convert)  on Mac    w/code      P3D
  318. Model converters from     NFF     Many!   Many!     some        .      NFF,OFF
  319. Network rendering       Inetray     .       .      in 2.2       .     dart,nart
  320. User support           maillist maillist  good     digest+   little     good
  321. Other S/W support        some     Much!   a bit     some      a bit     some
  322.  
  323. For timing comparisons, see the next article.
  324.  
  325. -------------------------------------------------------------------------------
  326.  
  327. Ray Tracer Races, Round 2, by Eric Haines
  328.  
  329. After running timings of the various ray tracers out there in the last issue,
  330. I received various comments from authors.  David Hook and Bernie Kirby went so
  331. far as to run a bunch of the ray tracers on different platforms under
  332. different compiler options; see their results at the end of this issue.  The
  333. POV developers sent me a beta of POVRAY 2.0 so that the snail's pace of 1.0
  334. could be (massively) improved.  Also, there were some interesting comments on
  335. how shadows for transmitters are computed; see the relevant articles on this
  336. topic.  Without further ado, here are the current results.
  337.  
  338. Timings - default size SPD databases (i.e. up to 10,000 objects in a scene),
  339. time in seconds on HP 720 workstation, optimized and gprof profiled code.
  340. Includes time to read in the ASCII data file and set up.  Note that profiling
  341. slows down the execution times, so real times would be somewhat faster in all
  342. cases (about 30%); plus, the profiler itself is good to +-10%.  Also, these
  343. timings are purely for this machine - results will vary considerably depending
  344. on the platform (see David Hook's article).  Now that I've explained why these
  345. are useless, here goes:
  346.  
  347.                 balls   gears   mount   rings   teapot  tetra   tree
  348.  
  349. Art/Vort         478    1315     239     595      235     84     381
  350. Art/Vort +float  415    1129     206     501      203     72     327
  351. Rayshade w/tweak 188     360     174     364      145     61     163
  352. Rayshade w/grid 1107     412     174     382      145     61    1915
  353. Radiance         289     248     165     601      150     42     197
  354. Bob              402     747     230     831      245     50     266
  355. RTrace           664    1481     813    1343      341    153     372
  356. RTrace c6 m0     652    1428     811    1301      331    155     363
  357. POV 2.0beta+     588    1895     668    1113      306     56     542
  358. POV 1.0        191000 1775000  409000  260000    45000  31000  250000
  359.  
  360. The gears and mount tests are probably worth ignoring because everyone handles
  361. shadows for transparent objects differently.  Some consider them opaque to
  362. shadows, others handle it differently.
  363.  
  364. Here are timing ratios (i.e. 1 is the fastest time for a given test, with
  365. the other timings normalized to this value):
  366.  
  367.  
  368.                 balls   gears   mount   rings   teapot  tetra   tree
  369.  
  370. Art/Vort         2.54    5.30    1.45    1.63    1.62    2.00    2.34
  371. Art/Vort +float  2.21    4.55    1.25    1.38    1.40    1.71    2.01
  372. Rayshade w/tweak  1      1.45    1.05     1       1      1.45     1
  373. Rayshade w/grid  5.89    1.66    1.05    1.05     1      1.45   11.75
  374. Radiance         1.54     1       1      1.65    1.03     1      1.21
  375. Bob              2.14    3.01    1.39    2.28    1.69    1.19    1.63
  376. RTrace           3.53    5.97    4.93    3.69    2.35    3.64    2.28
  377. RTrace c6 m0     3.47    5.76    4.92    3.57    2.28    3.69    2.23
  378. POV 2.0beta+     3.13    7.64    4.05    3.06    2.11    1.33    3.33
  379. POV 1.0       1015.96 7157.26 2478.79  714.29  310.34  738.10 1533.74
  380.  
  381.  
  382. Art/Vort was compiled with and without a "+f" compiler option; with it on
  383. floating point numbers are not promoted to doubles during expression
  384. evaluation (and so things runs noticeably faster).  Other packages may benefit
  385. from such compiler options.
  386.  
  387. Rayshade had some minor user intervention.  The ceiling of the cube root of
  388. the number of objects in the scene was used as the efficiency grid resolution.
  389. For example, balls has 7382 objects:  cube root is 19.47, ceiling is then 20,
  390. so a 20 x 20 x 20 grid was used.  Rayshade needs hand tweaking of the grid
  391. structures for extra efficiency (esp. with balls and tree), though this is
  392. fairly simple for the SPD tests (i.e. leave the background polygon out of the
  393. grid structure).  Tweaking in these cases means leaving ground plane polygon
  394. (if it exists) out of the grid structure.
  395.  
  396. Radiance is quite different in its approach, as it is more physically based.
  397. Efficiency structures are built in a separate program (so the time spent doing
  398. this is not included in the above stats).  Also, Radiance outputs in a
  399. floating point format (which can be quite handy).
  400.  
  401. RTrace is often a bit faster when the "c6 m0" options are used.
  402.  
  403. POV 2.0 has an efficiency scheme built in and so is comparable to the others,
  404. so don't get freaked out by the POV 1.0 performance numbers.
  405.  
  406. ----
  407.  
  408. Notes from Antonio Costa on RTrace:
  409.  
  410. Let me make just some small remarks about RTrace.  Perhaps you haven't
  411. explored its options, but I think it could perform slightly better (at least
  412. 8% better, according to some simple tests I did).
  413.  
  414. Please run it with options 'c6 m0':
  415. c6 -> enclose at least 6 objects per enclosing box (default is c4)
  416. m0 -> use simple lighting model (default is m1, which uses a model
  417.       developed by Paul Strauss of SGI; it's much more complex!)
  418.  
  419. When scenes have a larger amount of simple primitives like spheres and
  420. boxes the enclosing strategy isn't as efficient as when they have cones,
  421. patches, triangles, letters, etc. The value c4 is a compromise (normally
  422. the user shouldn't change it, but sometimes some tuning can be done).
  423.  
  424. [c6 turns out to be a bit better in most cases, but using both options
  425. improved performance by at most 4% maximum on my machine.  -EAH]
  426.  
  427. The Strauss' model uses some math functions that unfortunately make the
  428. rendering somewhat slower then the standard Phong model (this is an area
  429. where I think good improvements can be done -- approximating functions
  430. like power(), sqrt(), acos()).
  431.  
  432. You can also avoid the problem with the 'rings' scene using an option
  433. that increases the number of surfaces -- option '+S2000' means 2000
  434. surfaces (default is 256). To increase the number of objects or lights
  435. you can also use '+Sn' or '+Ln'.
  436.  
  437. ----
  438.  
  439. For those of you who want to know the particulars of the tests, read on:
  440.  
  441. Here are the command lines I used for the various tracers.  I tried to use the
  442. fastest method available for shadows for transparent objects - each tracer does
  443. this a bit different.  Mostly I would say "ignore the results for gears and
  444. mount" because of the way the methods differ.  I used the enhanced Standard
  445. Procedural Database package (next article) to test the ray tracers.
  446.  
  447. POV: time povray +ms5000 +i$dog.pov +ft +w1 +h1 -odummy.tga
  448. ART: time art $dog.art 512 512
  449. RAYSHADE: time rayshade $dog.ray -o -R 512 512 -O $dog.rle
  450. RTRACE: time rtrace c6 m0 +S2000 w512 h512 O1 $dog.rt $dog.ppm
  451. BOB:
  452.     sed -f vivid2bob.sed $dog.b > /tmp/junk
  453.     mv /tmp/junk $dog.b
  454.     time bob -s $dog
  455. RADIANCE:
  456.     # uses a converter Greg Ward sent, which I call NFF2Radiance
  457.     ../../$dog -r 1 | NFF2Radiance -vf $dog.vp > $dog.rad
  458.     oconv $dog.rad > test.oct
  459.     time rpict -vf $dog.vp test.oct > $dog.pic
  460.  
  461. -------------------------------------------------------------------------------
  462.  
  463. An Enhanced Standard Procedural Databases Package, by Eric Haines
  464.  
  465. Alexander Enzmann and Eduard Schwan took the SPD package (which, as you may
  466. know, generates procedural models for testing ray tracer speed) and added a
  467. ton of code to it.  The new code now outputs to these formats:
  468.  
  469.     NFF (used by MTV ray tracer; but the SPD always output using this)
  470.     POV-Ray 1.0
  471.     Polyray v1.4, v1.5
  472.     Vivid 2.0
  473.     Rayshade
  474.     RTrace 8.0.0
  475.     Art 2.3
  476.     QRT 1.5
  477.     POV-Ray 2.0 (no, it's not officially out yet: format subject to change)
  478.     PLG format for use with "rend386"
  479.     Raw triangle output
  480.  
  481. It can also output the models as line drawings to the screen for previewing:
  482. IBM, Mac, and HPUX drivers are provided, and new drivers are trivial to write
  483. (i.e. draw a line).
  484.  
  485. There is also a program, showdxf, which will convert or display DXF files
  486. (actually, a limited subset of these - just 3DFACE entities).  There are two
  487. sample DXF files, a skull and an f117, included.
  488.  
  489. There's also a sample code file which can be used as a template for writing
  490. your own output programs.  What's nice about this package is that by writing a
  491. program representing your model (or interpreting your model as input a la
  492. showdxf.c), you can then convert it to a wide number of formats.  I'd love to
  493. see more show*.c interpreters (e.g. one for Wavefront obj format so that the
  494. cool Viewpoint models at avalon.chinalake.navy.mil can be converted) and other
  495. output formats.
  496.  
  497. I did some polishing and whatnot to the distribution and have placed the whole
  498. thing at weedeater.math.yale.edu's /incoming directory as SPDup31.tar.Z and
  499. SPDup31.zip .  Hopefully I didn't futz things too badly (I suspect there needs
  500. to be some file renaming for the Mac version), but let me know if I did.
  501. Anyway, I hope that the permanent home of the code will be
  502. princeton.edu:/pub/Graphics somewhere.
  503.  
  504. -------------------------------------------------------------------------------
  505.  
  506. Shadows from Refractive Objects, by Steven Collins (steve@crl.hitachi.co.jp)
  507.  
  508. gophcide@cs.montana.edu (Brett Donahue) writes:
  509. >After tracing a ray from the view plane and hitting an objects surface, you
  510. >cast a ray from that point to the light source.  What do you do if there is
  511. >a total transparent object with an index of refraction on the path to the
  512. >light source?  Once this ray is refracted, it will not hit the light source.
  513. >Do you just ignore the object?  That is what I think POV ray is doing.  I
  514. >put a transparent object between a plane and the light source; and there
  515. >was no shadowed areas.  There should be some areas on the plane where the
  516. >refracted light would not hit. 
  517.  
  518. A moot point indeed.  Not many ray-tracers handle this problem correctly.
  519. Most take the "easy way out" of either a) ignoring the ray if _any_ obstacle
  520. is encountered between the surface and the lightsource or b) if the ray passes
  521. through transparent objects only, then attenuate the lighting according to
  522. some scattering approximation function.  a) always gives rise to completely
  523. dark shadows, whereas b) is an improvement in that it gives rise to lighter
  524. regions of shadow where the light has been attenuated proportional to the
  525. distance of refractive material passed through.
  526.  
  527. Either of these approaches do not capture the caustics effects.  There seems
  528. to be 2 methods around to do this:  either a) send out _lots_ of rays from the
  529. surface in the hope that some of them will hit the light source.  i.e.:
  530. sample the hemisphere above the point of intersection and trace these rays.
  531. For better results the hemi-sphere may be importance sampled by determining
  532. the solid angle subtended by all light sources.  This is of course incredibly
  533. expensive computationally and leads to very noisy caustic effects.  The
  534. alternative approach is to shoot rays from the light sources in a pre-
  535. processing step.  A number of approaches to this exist.  Heckbert proposed
  536. shooting may rays from the light sources and storing the intersections of
  537. these rays with surfaces as a "texture map" of sorts.  Thus when executing the
  538. secondary phase, intersections with surfaces use these texture maps as an
  539. estimate of the light incident on the surface.  Another approach is that of
  540. Watt & Watt where a beam tracing first phase performs a similar operation but
  541. this time only polygonally defined surfaces are catered for (due to the
  542. beam-tracing approach).  Here, light beams are traced through the scene and
  543. the intersections of these beams with surfaces are stored as polygon feature
  544. polygons and used in the "eye-phase" to estimate the caustic light energy.
  545. Finally, more recent work (I've just shipped my Siggraph '92 procs.  over
  546. 3,000 miles away so forgive not being able to give the exact reference)
  547. published in Siggraph '92 (was it Kirk and Barr or Snyder...?  or Arvo...
  548. these guys do so much excellent stuff its hard to keep track) [no, it was
  549. Mitchell and Hanrahan -EAH], which involved a more analytic approach to
  550. determine the location of the caustic effects by analytically estimating the
  551. wave-fronts and caustic cusps resulting from light interacting with a surface
  552. of gaussian curvature.
  553.  
  554. This is, as you can probably guess, an area of interesting on-going research.
  555.  
  556. -------------------------------------------------------------------------------
  557.  
  558. Shadows Through Transmitters, by Eric Haines, Greg Ward, Alexander Enzmann,
  559.     Stephen Coy, and David Hook
  560.  
  561. In doing the SPD timings tests on the various ray tracers available, I found
  562. that each renderer does shadowing of transmitters its own way.  This is fair
  563. enough:  when a transmitter "blocks" a light, there are many ways to handle
  564. the situation.  One is to treat the transmitter as opaque and simply block
  565. any light.  Another is to filter the color of the light by the transmitter's
  566. surface color.  A more elaborate method is to actually compute the length of
  567. the ray inside the transmitter and then also attenuate the color using this
  568. distance (e.g. Radiance does this).  For my tests I tried to pick the fastest
  569. option available with the ray tracer.
  570.  
  571. Some comments from the designers:
  572.  
  573. ----
  574.  
  575. From Greg Ward (the main author of Radiance):
  576.  
  577. As for the shadow under a refracting sphere or such, I just follow the rays
  578. through the object to the light source following a refracted path, and if I
  579. hit it, I get it, if I don't, I don't.  It's not the correct thing to do, but
  580. it's better than throwing the contribution away or pretending it's not there,
  581. and it does give the appearance of light concentration in some cases.  To be
  582. honest, I don't care that much about refracting objects as they rarely turn up
  583. in architectural scenes.  Windows, yes -- crystal balls, no.
  584.  
  585. Yes, the refracted path source testing depends on the size of the light
  586. source among other things, so it's not a correct approach (as I said).
  587. But it's easy, and strikes me as better than nothing.  I don't do any special
  588. type of sampling with regards to ray direction -- I just shoot assuming that
  589. there's nothing in the way, and if I hit a dielectric surface, I continue
  590. to follow the refracted (but not the reflected) ray.  Works great for planar
  591. surfaces, so it makes most of my users happy.
  592.  
  593. ----
  594.  
  595. From Alexander Enzmann (an author of POV-Ray):
  596.  
  597. Another thing to consider with POV-Ray (especially in gears) is that diffuse
  598. shadows are computed for all surfaces.  Several tracers have an option for how
  599. many surfaces will have shadows computed (Rayshade and RTrace have several
  600. options), some tracers don't ever compute shadows for an "interior" surface of
  601. a transparent object (Vivid/BOB).  POV-Ray always does the maximum work.  The
  602. high ratio you got on the gears benchmark comes from that to a great extent
  603. and from the fact that POV-Ray doesn't do polygons (has to have the gears
  604. broken down into triangles).
  605.  
  606. ----
  607.  
  608. From Stephen Coy (an author of the Vivid/Bob ray tracers):
  609.  
  610. There actually seem to be two issues here.  The first is how the intersection
  611. with an "interior" surface is shaded.  The second is how shadow colors are
  612. calculated.
  613.  
  614. When Vivid/Bob intersects an interior surface the only component that is taken
  615. into account is the transparency.  This implies that the surface doesn't have
  616. a diffuse component (hence no shadows), it doesn't have a specular highlight
  617. and there are no reflected rays generated.  I've come to believe that my
  618. handling of the specular rays and highlights is wrong.  As far as the diffuse
  619. component goes I think the correct solution is quite a bit tougher.  I think
  620. that the proper solution would involve the effects of the light all along the
  621. ray as it passes through the transparent material.  In effect, transparent
  622. materials should be treated like participating media where you actually have a
  623. diffuse contribution and shadows cast throughout the volume.
  624.  
  625. When it comes to calculating the color of shadows Vivid/Bob gives you a couple
  626. of options.  With the no_exp_trans flag set, the light color is simply
  627. filtered by the transparent component of the material.  When this flag is not
  628. set (the default) the amount of the filtering is attenuated exponentially
  629. based on the distance the ray travels through the material.  Note that this
  630. has the side-effect of making the material definition scale dependent.
  631. Additionally Vivid/Bob also supports fake caustics.  For these, the color of
  632. the shadow ray is further tweaked based on the angle between the surface
  633. normal and the direction of the shadow ray.  This was inspired by Andrew
  634. Pearce's trick in Graphics Gems I.
  635.  
  636. ----
  637.  
  638. From David Hook (an author of the "art" ray tracer):
  639.  
  640. Art traces the ray straight through the object checking for texturing and
  641. modifying the light passed through accordingly.  Apart from the texturing it
  642. doesn't seem to cause to much heartache computationally, although, as Greg
  643. Ward points out, going straight through without taking into account effects
  644. due to refraction fails to produce any caustics, which are the things that
  645. make refractive light the most interesting.  On the satisfaction-with-the-image
  646. side, we have another program using the same shading model that is used by
  647. architects, and the lack of caustics has never caused any problems.  I
  648. sometimes wonder if computer graphics people are the only ones who notice them!
  649.  
  650. -------------------------------------------------------------------------------
  651.  
  652. Faster Bounding Volume Hierarchies, by Brian Smits (bes@graphics.cornell.edu)
  653.     and Eric Haines
  654.  
  655. [I'm writing up this idea that Brian passed on to me.  It turns out to be
  656. quite old, mentioned in Goldsmith's article and in Arvo & Kirk's section of
  657. _An Introduction to Ray Tracing_.  For whatever reason, I didn't know about it
  658. until Brian filled me in (guess I should read things a bit more carefully!).
  659. I haven't seen the idea applied to Kay & Kajiya's scheme, nor have I seen any
  660. test data about it or seen it used in any free ray tracing software.  It's
  661. pretty trivial to implement, so I recommend it. -EAH]
  662.  
  663. This article presents a simple way to improve the performance of automatic
  664. bounding volume hierarchy schemes.  Automatic bounding volume hierarchy
  665. methods are one way to improve the efficiency of ray tracing.  By putting
  666. objects in a nested hierarchy of bounding boxes and testing each ray against
  667. these, most of the objects in a scene can be quickly rejected as not
  668. intersecting the ray.  Goldsmith/Salmon & Scherson/Caspary explored methods of
  669. building up a hierarchy of bounding volumes automatically, as did Kay/Kajiya.
  670.  
  671. Kay & Kajiya simply built a hierarchy of boxes by sorting the object set by
  672. the object centroid locations in X, then Y, then Z.  For example, with a
  673. hundred objects in a scene the objects' 3D center points would be sorted by X,
  674. and then this sorted list would be split into two sublists of fifty objects
  675. each, with a box put around each list.  Each sublist in turn would be sorted
  676. by their Y centroid values and split into two subboxes with twenty-five
  677. objects each, on down until boxes with two objects are created at the bottom
  678. of the hierarchy.
  679.  
  680. Goldsmith & Salmon wished to group objects more tightly.  Splitting a list of
  681. objects may not be such a great strategy:  imagine that of our hundred
  682. objects, fifty one made up a light fixture and forty nine made up a stapler
  683. that the light shines upon.  Splitting into two groups of fifty means that one
  684. box will include all of the stapler and one piece of the light, and so giving
  685. a box which contains a large amount of empty area between the light and the
  686. stapler.  A tighter bound, e.g. having a box around the stapler and another
  687. around the light, would yield better timings.  Goldsmith & Salmon's strategy
  688. is to randomize the list of objects and feed these into a hierarchy, placing
  689. each new object in the hierarchy so as to minimize the overall growth in size
  690. of the boxes in the tree.  By randomizing the list the first few primitives
  691. will tend to create a "skeleton" upon which the rest of the primitives can
  692. efficiently become a part.  [See the RTNews2 file at princeton.edu for more
  693. information.]
  694.  
  695. Brian Smits implemented this scheme in his ray tracer, and Jim Arvo pointed
  696. out a simple speed up (mentioned in Goldsmith's article).  By trying different
  697. randomized lists, various different configurations of the hierarchy occur.
  698. These hierarchies can be analyzed by examining their efficiency.  The criterion
  699. Brian used is the internal cost of the root node (see p. 212 of
  700. _An Intro to RT_).  Another simple criterion is to sum up the areas of all of
  701. the bounding volumes.  Each configuration will generate a different value;
  702. using the hierarchy with the best value will generally improve performance,
  703. since fewer bounding volumes should be intersected overall.  So time can be
  704. saved overall by spending a little extra time up front generating a few
  705. different configurations using different random number seeds.  The best random
  706. number seed can be saved for a particular scene and reused later to generate
  707. this best hierarchy.  This is quite a nice thing for fly through animations in
  708. particular:  one can spend a lot of time up front getting a good hierarchy and
  709. then store just one number (the seed) for the best efficiency scheme for the
  710. scene.
  711.  
  712. Brian notes:  "I found that on some environments that a good hierarchy could
  713. take half to a third of the time of a bad hierarchy.  `Average' hierarchies
  714. tended to be closer to good hierarchies than bad hierarchies, though."
  715.  
  716. ----
  717.  
  718. (Eric Haines) I have a few comments:
  719.  
  720. This same idea could be used on Kay and Kajiya.  Which axis is sorted first,
  721. and which order the axes are sorted (e.g. XYZ or XZY), gives six different
  722. generation combinations when using Kay and Kajiya.  By examining the fitness
  723. criterion of the boxes generated for each of these six, the tightest of the
  724. six can then be used.
  725.  
  726. I have a copy of POV 2.0beta sitting around which does Kay/Kajiya, so I hacked
  727. it to try the various combinations.  POV 2.0beta actually uses a different
  728. scheme than pure Kay/Kajiya:  it sorts each box along the longest axis.  For
  729. example, if you had 8 spheres in a row along the Z axis, it would come up
  730. (reasonably enough) with a hierarchy with each box's contents sorted along the
  731. Z axis.
  732.  
  733. Timings for Kay/Kajiya:
  734.  
  735.     balls   gears   mount   rings   teapot  tetra   tree     shells
  736.  
  737. longest  588    1895     668    1113      306     56     542      1464
  738.   area:    5214   881      205    30995     1514    74     74548    604068
  739.  
  740. XYZ      513-   2019     639+   1158+     288+    54-    516      1661-
  741.   area:    4420-  938      195    29174+    1367    72     74361+   688388
  742. YZX      512    2316-    644    1188      292     52     531      1605
  743.   area:    4399  1071-     211    29944     1343    72     74402    686440
  744. ZXY      513-   1735+    659-   1215-     298     52     549      1554+
  745.   area:    4388   764+     233-   30936-    1334    72     85085-   649846+
  746. YXZ      507+   1916     656    1182      301-    52     514+     1658
  747.   area:    4420-  884      190+   29583     1456-   72     74557    696927-
  748. ZYX      513-   2006     658    1183      289     52     532      1572
  749.   area:    4385+  869      226    30254     1321+   72     74382    651506
  750. XZY      508    1892     642    1187      293     52     552-     1579
  751.   area:    4402   910      215    30066     1373    72     74616    673416
  752.  
  753. "longest" is the "sort on the longest axis" scheme which comes with POV 2.0.
  754. "XYZ" means sort on the topmost level along X, then the subboxes along Y, then
  755. Z, etc.  The lowest value in a column (among the simple orderings) and
  756. category is marked with "+", the highest with "-".
  757.  
  758. As Brian notes, there's usually one bad hierarchy among the lot next to a
  759. bunch of reasonable ones.  There is some correlation between the area summation
  760. and the resulting rendering time:  "gears", in particular, has significantly
  761. different results and the best area summation is 1.33 times as fast as the
  762. worst (and the area of the best is 1.4 times smaller than the worst).  Most of
  763. the models have a fair bit of similarity along each axis.  Tetra's symmetry is
  764. a great example:  the axes' order just does not matter.  Gears does not, and
  765. so different schemes have significantly different results.  Using more
  766. realistic scenes would be interesting and probably give larger variances in
  767. results.
  768.  
  769. What's also interesting is that many of the simple XYZXYZ orderings beat the
  770. "pick the longest axis" method in overall timing.  In the "mount" and "shells"
  771. models the longest axis method is always better (in both timing and area
  772. summation), and in the "balls" and "teapot" models the longest axis is always
  773. the worst strategy.
  774.  
  775. Another scheme which deserves exploration is to sort on each axis, XYZ, and
  776. compare results:  using the axis which creates two boxes with the smallest
  777. total area would be an interesting strategy which should give fairly low area
  778. summations overall.
  779.  
  780. I suspect there is also not much difference between schemes because of the
  781. nature of the databases:  there's usually one object cluster instead of a few
  782. objects separated by distances (as would occur in a room, say), so the
  783. different schemes don't make too much difference.  I would also suspect wider
  784. variations when using Goldsmith/Salmon, as there is a lot more randomness and
  785. opportunity to seriously improve (or degrade) performance.  As it stands, for
  786. these models doing multiple hierarchies for Kay/Kajiya and picking the best
  787. doesn't save much time (maybe 4% on average) - kind of disappointing.  Using
  788. the absolutely longest axis doesn't seem to be a win for these scenes, though
  789. for other less homogeneous scenes it might perform better.  I don't know why
  790. it performs consistently worse for some databases; if nothing else, it does
  791. show that intuition is not always a good guide when designing new efficiency
  792. schemes.
  793.  
  794. -------------------------------------------------------------------------------
  795.  
  796. Simple Sun Position Program, by James Ashton (jaa101@deakin.anu.edu.au)
  797.  
  798. Guy Carpenter asks:
  799. >I'd like to be able to specify lon, lat, elev, date, time and get an
  800. >accurate position for the sun, and position, phase and orientation for
  801. >the moon.  I think I have all the necessary alg's kicking around, so it
  802. >shouldn't be too hard.
  803. >
  804. >- has anyone already done this?
  805.  
  806. I haven't done it very accurately but I did scrape together a quick and dirty
  807. Sun position generator in C.  It's only a rough approximation with no attempt
  808. to model the equation of time or lesser effects.  You provide latitude (in
  809. degrees), month (Jan 0th = 1.0, Dec 15th = 12.5, etc) and local time of day
  810. (midnight = 0.0, midday = 12.0) and it gives the (x, y, z) coordinates for a
  811. rayshade light source direction.  Z is up but I forget which axis I made
  812. North.  It was designed to aid in designing a `Solar house' and I'm sure it's
  813. accurate enough for that purpose.  It's a model of inefficiency but who cares!
  814.  
  815. #include <stdio.h>
  816. #include <math.h>
  817.  
  818. #define DTOR(d) ((d) * M_PI / 180.0)
  819. #define SEASON_ANGLE(month) (sin(((month) - 9.7) / 6 * M_PI) * 0.41)
  820. #define HOUR_ANGLE(hour) ((hour) / -12 * M_PI)
  821. #define POSITION_ANGLE(latitude) (DTOR(latitude))
  822.  
  823. double latitude, month, hour;
  824.  
  825. main()
  826. {
  827.     double x, y, z;
  828.  
  829.     for (;;)
  830.     {
  831.         if (scanf(" %lf %lf %lf", &latitude, &month, &hour) != 3)
  832.         {
  833.             fprintf(stderr, "bad floats read\n");
  834.             exit(1);
  835.         }
  836.         x = (-cos(SEASON_ANGLE(month)) * sin(HOUR_ANGLE(hour))),
  837.         y = (-sin(SEASON_ANGLE(month)) * cos(POSITION_ANGLE(latitude)) +
  838.             cos(SEASON_ANGLE(month)) * cos(HOUR_ANGLE(hour)) *
  839.             sin(POSITION_ANGLE(latitude))),
  840.         z = (-sin(SEASON_ANGLE(month)) * sin(POSITION_ANGLE(latitude)) -
  841.             cos(SEASON_ANGLE(month)) * cos(HOUR_ANGLE(hour)) *
  842.             cos(POSITION_ANGLE(latitude)));
  843.         printf("%f\t%f\t\t%f\n", x, y, z);
  844.     }
  845. }
  846.  
  847. -------------------------------------------------------------------------------
  848.  
  849. Sphere and Cylinder/Cone/Disc/Annulus Definition, by Eric Haines
  850.  
  851. Jonathan Roy asked me what I liked for quadric definitions.  I worked on this
  852. question professionally a few years back, and thought I'd pass on what I found.
  853.  
  854. I like for a sphere:
  855.  
  856.     radius, origin, axis for north pole, axis for start point on equator
  857.         (and optionally right or left-handedness)
  858.  
  859. The axes are important when you're applying a texture to a surface (otherwise
  860. can be ignored).  Of course, the user doesn't have to see it this way.  For
  861. defining ellipsoids, no one bothers with defining the foci - you simply need
  862. to non-uniformly scale (e.g. stretch) a sphere with a transformation matrix.
  863. You have to be sure to stretch the normal equation for the sphere by the
  864. transpose of the adjoint of this matrix to get the normals right (see An Intro
  865. to Ray Tracing in Pat Hanrahan's section for a little more on this, and see
  866. old issues of this newsletter).
  867.  
  868. I like for cylinders/cones/annuli (i.e. "washers"):
  869.  
  870.     base origin, axis vector, base radius, apex radius, height, axis for
  871.         starting texture point on equator
  872.  
  873. This is real general and gives you three different primitives all in one.  In
  874. the code you will probably want separate intersectors for them, though (i.e.
  875. height of 0.0 means it's a washer and the cone equation will tend to explode
  876. at this height).
  877.  
  878. -------------------------------------------------------------------------------
  879.  
  880. Ray Tracing Roundup
  881.  
  882. Watt & Watt's book, _Advanced Rendering and Animation Techniques:  Theory
  883. and Practice_, is a good unified guide to advanced rendering in general and I
  884. highly recommend it.  Think of it as a condensed and simplified "Best of
  885. SIGGRAPH" for the past decade and you won't be too far wrong.  (Eric Haines)
  886.  
  887. --------
  888.  
  889. The 3rd edition of the cross-indexed bibliography on ray-tracing and related
  890. topics is available.  Included in this edition will be some 600 citations,
  891. papers from all the major graphics conferences and full keywording of
  892. citations.  Cross-reference files (by keyword and author) and a glossary of
  893. the 120 keywords used are also slated for inclusion.  (Rick Speer,
  894. speer@cs.colorado.edu)
  895.  
  896. --------
  897.  
  898. Texture Library Site
  899.  
  900. The beginning of a texture library for rendering applications is being
  901. started on 
  902.     wuarchive.wustl.edu
  903. located in the
  904.     mirrors/architec
  905.  
  906. directory.  Please FTP the README file first.  There are around 100 texture
  907. images stored in compressed TIFF format.
  908. (Paul David Bourke, pdbourke@ccu1.aukuni.ac.nz)
  909.  
  910. [I looked at the initial 40 of these.  Good idea, but only a very few of
  911. them were tileable (i.e. could be repeated seamlessly over a surface). -EAH]
  912.  
  913. --------
  914.  
  915. Inventor 3D File Format, by Gavin Bell (gavin@sgi.com)
  916.  
  917. You can do a great service to everybody if you avoid creating yet another 3D
  918. object file format and at least adopt Inventor's ASCII file format for your
  919. system.  If not the objects, at least the syntax, to make translation easy.
  920. Documentation on the file format is free-- you can anonymously ftp it from
  921. sgi.com:sgi/inventor/Doc.tar.Z.
  922.  
  923. --------
  924.  
  925. Ray Traced Church Interiors
  926.  
  927. There is a series of five images of the interior of the Renaissance church "Il
  928. Redentore" in Venice.  The original (huge) Utah RLE images are available from:
  929.     cad0.arch.unsw.edu.au:/pub/rayshade/images/Il_Redentore
  930.  
  931. The images were produced using Rayshade, the images and the model
  932. were created by Nathan O'Brien as part of his undergraduate dissertation
  933. "Building Preservation and Three Dimensional Computer Modelling" at UNSW.
  934.  
  935. These images are extremely good IMHO, and well worth the effort of getting!
  936. (Stephen Peter, steve@keystone.arch.unsw.edu.au)
  937.  
  938. ----
  939.  
  940. You may ftp jpeg versions of them (perhaps for a limited time only) from:
  941. services.more.net 128.206.20.15 (Columbia, Missouri, USA) in
  942. /pub/jpg/Il_Redentore.
  943.  
  944. These are not the jpegs which appeared on alt.binaries.whatever but
  945. were jpegs recreated from the original .rle files by me.
  946. (David Drum, UC512052@mizzou1.missouri.edu)
  947.  
  948. --------
  949.  
  950. My book is coming out in October and is called "Adventures in Raytracing,"
  951. published by QUE.  It covers Polyray from "top to bottom".  The book is
  952. dedicated to raytracing (with Polyray), 3d modeling (with POVCAD - my program)
  953. and animation.  The book has an almost complete reference on Polyray and it
  954. even includes a tear-out card with the command lines, language syntax, etc.
  955. It includes a disk with Polyray 386 (no 387) and 386/486 (+387) version,
  956. POVCAD (windows and Dos version) and CompuShow (image file viewer utility).
  957.  
  958. Right now I've also written a small utility called CLAY.ZIP which does free
  959. form deformation on RAW data files.  The output comes out as RAW also.  In
  960. addition I've written another utility to tween 2 RAW data files in Polyray -
  961. the good thing about it is that it can do linear, quadratic or cubic
  962. interpolation...  and the output from the utility is just 1 file independently
  963. of how many frames are required.  (Alfonso Hermida, afanh@stdvax.gsfc.nasa.gov)
  964.  
  965. --------
  966.  
  967. I've just completed a book on 3D graphics animation with Dave Mason called
  968. "Making Movies on Your PC".  Lots of pretty pictures, mostly beginners tips on
  969. creating FLI/FLC format animations on IBM clones.  (Alexander Enzmann,
  970. 70323.2461@compuserve.com)
  971.  
  972. [This book also includes Polyray and 2D morphing software. -EAH]
  973.  
  974. --------
  975.  
  976. YART 0.40 - a Fast Growing Framework for Obj.Or.Graphics, Ekkehard Beier
  977.     (ekki@prakinf.tu-ilmenau.de)
  978.  
  979. The time is good for a new graphics system, including both ray-tracing and
  980. gouraud shading facilities!  This system should be object-oriented, highly
  981. extensible and highly interactive (Real-time raytracing or real-time shading
  982. and raytracing if explicitly wanted).  Using SGI GL/PHIGS[PEX]...-shading for
  983. built-in modelling and direct interaction, and Raytracer for HiQuality final
  984. images.
  985.  
  986.         * YART - Yet Another Ray Tracer *
  987.  
  988. is a first implementation of such a system.
  989.  
  990. *there is a mailing list: yart@prakinf.tu-ilmenau.de
  991.  
  992. *PLATFORMS: SGI Iris, SUN Sparc, Linux-PC, [MS Windows - in work]
  993.  
  994. ftp from metallica.prakinf.tu-ilmenau.de [141.24.12.29] : pub/PROJECTS
  995. (login as "ftp", password "HARLEY FUCKIN' DAVIDSON").
  996.  
  997. *PRECONDITIONS: C++ (At&T cfront 2.1), Tcl, GL or X11 or PHIGS PLUS.
  998.  
  999. [There's lots more text, contact the author for more info. -EAH]
  1000.  
  1001. --------
  1002.  
  1003. General software:
  1004.  
  1005. 3DS2POV is a utility that converts 3D Studio files to POV-Ray, Vivid, Polyray,
  1006. or raw triangle formats.  A bounding volume hierarchy is added to the POV-Ray
  1007. files.  The latest version converts from the binary .3DS format where previous
  1008. versions used the ascii format.  If you've got the time (or a Cray) it'll
  1009. convert whole animation sequences as well.  This program is on the YCCMR BBS
  1010. and the TGA BBS as 3DSPOV17.ZIP.  Both DOS binaries and C source are included.
  1011. (Steve Anger, 70714.3113@CompuServe.COM)
  1012.  
  1013. --------
  1014.  
  1015. [I haven't mentioned BRLCAD for awhile, so here's a blurb:]
  1016.  
  1017. The US Army BRLCAD package (brl@cad.mil) -- Ballistic Research Laboratory
  1018.   is available as encrypted source code via anonymous ftp from:
  1019.        ftp.brl.mil:/brl-cad/*
  1020.   FAX a completed copy of the 'agreement' file to BRL for the 'crypt' key.
  1021.   BRLCAD is very mature -- also runs in parallel on a heterogeneous mixture
  1022.     of systems -- image quality is good -- but perhaps not extraordinary.
  1023.   (Alexander-James Annala)
  1024.  
  1025. [It really does look like an amazing system, worth checking out if you plan
  1026. on doing any "serious" modeling, esp. CAD related. - EAH]
  1027.  
  1028. --------
  1029.  
  1030. Radiance related:
  1031.  
  1032. A fellow by the name of Georg Mischler of ETH in Zurich, Switzerland, has
  1033. written a new translator for exporting Radiance files from within AutoCAD.
  1034. This new AutoLISP program seems to be quite capable, and he has installed
  1035. it in the pub/translators directory on the anonymous ftp account of
  1036. hobbes.lbl.gov (128.3.12.38).  I invite users with AutoCAD to try it out.
  1037. (Gregory J. Ward, greg@hobbes.lbl.gov)
  1038.  
  1039. --------
  1040.  
  1041. Rayshade related:
  1042.  
  1043. I have just compiled the 'Enhanced' version of Rayshade (patchlevel 6) for a
  1044. PC running MSDOS and it appears work fine.  You can get it from
  1045.     telva.ccu.uniovi.es (156.35.31.31):
  1046.     /pub/graphics/raytrace/rayshade/MSDOS/Erayshade.for.PC.zip.
  1047. You'll need a 486 ( yeah, you'll can run it on a 386, but S...L...O...W ).
  1048. Also I packed a shower and a converter from/to the RLE file format.
  1049. (Raul y Quique, nuevos%hp400.ccu.uniovi.es@Princeton.EDU)
  1050.  
  1051. ----
  1052.  
  1053. I am placing in weedeater.math.yale.edu:/incoming 3 executables:
  1054.     getX11, rayshade.4.0.6, raypaint.4.0.6
  1055. which have been ported to SCO UNIX & Univel SVR.  They will run in both
  1056. environments.
  1057.  
  1058. These have been optimized for INTEL 486 & Pentium processors to use on-chip
  1059. FPU & cache memory.  (Robert Walsh, SCO <robertwa@sco.com>)
  1060.  
  1061. ----
  1062.  
  1063. I have just uploaded a port of rayshade 4.0.6enh2 to OS/2 2.1 to
  1064. weedeater.math.yale.edu.  Most of the patches posted through July 20, 1993 to
  1065. this list have been added.  (David C.  Browne, DBROWNE@diamond.kbsi.com)
  1066.  
  1067. ----
  1068.  
  1069. Check out the June issue of Omni Magazine, page 52.
  1070.  
  1071. The "computer-generated image of HIV created on a Cray Super Computer"
  1072. was done with Rayshade.  It really looks much larger in person :-):-).
  1073. A larger version of this image may be found on:
  1074.  
  1075.     fconvx.ncifcrf.gov
  1076.  
  1077. in tmp/rayshade as virion.rle.Z.  For more info you can contact me at
  1078. mcgregor@ncifcrf.gov or Connor McGrath at mcgrath@ncifcrf.gov.  (Please see
  1079. the acknowledgment.txt file for a few more details).
  1080.  
  1081. --------
  1082.  
  1083. RTrace/Radiosity related:
  1084.  
  1085. The "lightR" radiosity program from Bernard Kwok (ae140@freenet.carleton.ca)
  1086. is now available to run in a PC with DOS DJGPP GO32 extender.  You can ftp a
  1087. working version with some scenes and utils at asterix.inescn.pt
  1088. [192.35.246.17] in directory pub/LightR/PC-386 (lightr12.arj) The source code
  1089. is in pub/LightR/PC-386/src (lightr.arj) I found the program very interesting
  1090. and it helped me to learn a lot about Radiosity (a rendering algorithm).  I
  1091. have also adapted its output to the RTrace ray tracer so that nice images
  1092. could be produced:
  1093.  
  1094.              lightr          scn2sff         rtrace
  1095.    PAT, VW ----------> SCN ----------> SFF ----------> PIC PPM
  1096.  
  1097. I included minimal docs and specs, but I intend to improve this area in the
  1098. future...  Please feel free to contact me.  (Antonio Costa,
  1099. acc@asterix.inescn.pt)
  1100.  
  1101. ----
  1102.  
  1103. There is a new version of the RTrace ray-tracing package (8.3.2) at
  1104. asterix.inescn.pt [192.35.246.17] in directory pub/RTrace.  Check the README
  1105. file.
  1106.  
  1107. RTrace now can use the SUIT toolkit to have a nice user interface.  Compile it
  1108. with -DSUIT or modify the Makefile.  SUIT is available at
  1109. suit@uvacs.cs.virginia.edu
  1110.  
  1111. ----
  1112.  
  1113. I have put in pub/RTrace here 2 PostScript docs describing the syntax of both
  1114. SFF and SCN.  I would many people to read them and send me comments, if
  1115. possible...  The files are sffv8-p?.ps.Z and scn15-p?.ps.Z
  1116. (Antonio Costa, acc@asterix.inescn.pt)
  1117.  
  1118. [There are undoubtedly a large number of other changes and additions to RTrace
  1119. by this time; Antonio seems to have unlimited time and energy for this thing!
  1120. For example, I noticed he now has an IRIS Inventor input interpreter.  Check
  1121. with him for the latest.  -EAH]
  1122.  
  1123. --------
  1124.  
  1125. Vivid/Bob related:
  1126.  
  1127. Triangular Glob Generator v1.0
  1128. copyright 1993, Dov Sherman
  1129.  
  1130. (For use with Stephen Coy's Vivid Raytracer v1.0 or higher)
  1131.  
  1132. GLOB is a handy utility for creating more realistic, rounded objects without
  1133. relying on bezier patches (which are still good but hard to work out on
  1134. paper).
  1135.  
  1136. GLOB takes an ASCii file containing the coordinates and radii of a series of
  1137. spheres and creates smooth connections between each sequential pair,
  1138. connecting the first and third spheres in each sequential triple, and placing
  1139. a triangular polygon over the gap created by a sequential triple.  I'll try to
  1140. explain this better later.
  1141.  
  1142. The output is in the form of an include file for Stephen Coy's Vivid
  1143. Raytracer.  Other raytracer formats may be supported in future versions if I
  1144. ever manage to figure out the other ones.
  1145.  
  1146. GLOB10.ZIP is available from wuarchive.wustl.edu.  I just put it in
  1147. /pub/MSDOS_UPLOADS/graphics.  Also available on the You Can Call Me Ray BBS.
  1148.  
  1149. (Dov Sherman, DS5877@CONRAD.APPSTATE.EDU)
  1150.  
  1151. --------
  1152.  
  1153. POV related:
  1154.  
  1155. Ray Tracing Creations
  1156. Drew Wells, Chris Young, Dan Farmer
  1157. The Waite Group
  1158. 1993
  1159. ISBN 1-878739-27-1
  1160.  
  1161. This book covers the POV ray tracer from soup to nuts, with lots of examples
  1162. and whatnot.  Essentially, it's a users manual for POV, and it comes with
  1163. POV 1.0 on disk.  (Eric Haines)
  1164.  
  1165. ----
  1166.  
  1167. There's a new GUI modeller call MORAY out for POV-Ray. This is the most
  1168. complete modeller for POV-Ray I've seen so far. It supports most of POV-Ray's
  1169. primitives, CSG, hierarchical linking, and has an nice bezier patch editor.
  1170. Here's a short description from the docs:
  1171.  
  1172. MORAY V1.3 is an easy-to-use GUI modeller for use with POV-Ray 1.0 (and 2.0
  1173. when released). It supports the cube, sphere, cylinder, torus, cone,
  1174. heightfield and bezier patch primitive, as well as adding conic, rotational
  1175. and translational sweeps. You can add (spot)lights, bounding boxes, textures
  1176. and cameras, which show the scene in wireframe 3D. Shareware US$59.
  1177. Not crippled.  Requires 286 or higher, mouse, runs on VGA and SVGA/VESA.
  1178.  
  1179. MORAY version 1.3 is available at ftp.informatik.uni-oldenburg.de in
  1180. /pub/dkbtrace/incoming.  (Steve Anger, 70714.3113@CompuServe.COM)
  1181.  
  1182. ----
  1183.  
  1184. No, POV 2.0 is not out yet.  To whet your appetite:
  1185.  
  1186. POV 2.0 includes automatic bounding boxes, better textures, recursive
  1187. antialiasing, primitives for finite cylinders & cones.  The parser will now
  1188. accept mathematical expressions for vectors and floating point numbers.  It
  1189. also has some bugfixes.
  1190.  
  1191. ----
  1192.  
  1193. When using PoV on a X window based Unix system as f.i. Linux, you may use
  1194. my x256q Previewer code instead of the xwindows code that comes with PoV.
  1195.  
  1196. It resides on irz301.inf.tu-dresden.de:pub/gfx/ray/misc/x256q
  1197. (Andre Beck, beck@irzr17.inf.tu-dresden.de)
  1198.  
  1199. ----
  1200.  
  1201. Check out the 3d l-system generator (ms-dos) for POV-Ray raytracer I found on
  1202. the graphics alternative bbs 510-524-2780.  the qbasic source makes a raw
  1203. coordinate file for input to raw2pov for smooth_triangle output.  3 examples
  1204. from 'algorithmic beauty of plants' provides about 8 variables that one can
  1205. fuss with to produce diff shape trees/bushes.  uploaded as treebas.zip to
  1206. ftp.informatik.uni-oldenburg.de:pub/dkbtrace/incoming/ (mirrored on
  1207. wuarchive.wustl.edu:graphics/graphics/mirrors/ftp.infor...)  (Tony Audas,
  1208. taudas@umcc.umcc.umich.edu)
  1209.  
  1210. ----
  1211.  
  1212. I use POVRAY and the small Makeanim program to do animation - using makeanim
  1213. you create a file with a series of movement variables - and it #defines them
  1214. into the .pov code and raytraces them all in sequence.  So if you want a
  1215. camera pan diagonally upward, your .anm file should look like:
  1216.     pan_x,    pan_y
  1217.     0,    0
  1218.     1,    1
  1219.     2,    2
  1220. etc...  It will define these for you, and they should be used instead of x
  1221. and y in your camera definition.  Makanim will only handle 20 variables,
  1222. unfortunately, so you can really only make 20 or less things move - but if
  1223. you move the camera around, this can make up for things.
  1224. (Dane Jasper, dane@nermal.santarosa.edu)
  1225.  
  1226. ----
  1227.  
  1228. RAW2POV is a utility that converts triangle data listed in xyz triplets to
  1229. POV-Ray smooth triangles.  It automatically adds its own bounding volume
  1230. hierarchy to overcome POV-Ray's lack of an efficiency scheme.  This program is
  1231. on the YCCMR BBS and the TGA BBS as RAWPOV17.ZIP.  Both DOS binaries and C
  1232. source are included.  [Also see 3DSPOV writeup above] (Steve Anger,
  1233. 70714.3113@CompuServe.COM)
  1234.  
  1235. ----
  1236.  
  1237. If you have any comments or suggestions about POVCAD please let me know.  The
  1238. home of POVCAD is Pi Square BBS (301)725-9080 in Maryland USA.  You may
  1239. download POVCAD (DOS or Windows version) and get the latest info on it.
  1240. [POVCAD is up to version 2.0b for Windows by now, and has more features than
  1241. the non-Windows version); there are also rumors that an X-Windows version may
  1242. be forthcoming.  -EAH] (Alfonso Hermida, afanh@stdvax.gsfc.nasa.gov)
  1243.  
  1244. ----
  1245.  
  1246. A lot of developers (A. Hermida, Lutz Kretschmar, Dan Farmer, Stephen Coy)
  1247. also hang out the PCG (Professional CAD Graphics Net).  You can get access to
  1248. this net via the BBS'es mentioned in the PoV docs, and in Europe via BBS
  1249. Bennekom, fido node 2:281/283, telephone 31-8389-15331.  Using Bluewave, I can
  1250. read and write in the echos for free.
  1251. (Han-Wen Nienhuys, hanwen@STACK.URC.TUE.NL)
  1252.  
  1253. ----
  1254.  
  1255. In the PC world, I have use a program called VVFONT.  It uses the stroke fonts
  1256. in borland and produces the characters as unions of spheres, codes, planes,
  1257. boxes, cylinders, etc.  It produces very good results and allows for rounded,
  1258. block, and beveled format for POV, DKB, and Vivid ray tracers.  If I don't see
  1259. it on the net, I will check with the author and download it somewhere and post
  1260. the location if there is any interest shown.
  1261. (Mike Hoyes, hoyes@rock.concert.net)
  1262.  
  1263. ----
  1264.  
  1265. I've uploaded my (uppercase only) alphabet to
  1266. ftp.informatik.uni-oldenburg.de:pub/dkbtrace/incoming (or some such place...
  1267. you know the one I mean).  The letters consists of cylinders and torii,
  1268. suitably bounded for performance reasons.  There is also a utility for writing
  1269. strings, and two sample .pov files.  Oh yes, almost forgot.  The file is
  1270. called 'beta.zip' (as there is already an alpha.zip...  Imaginative, huh?)
  1271. (Reidar "Radar" Husmo, radar@cs.keele.ac.uk)
  1272.  
  1273. ----
  1274.  
  1275. There are a few other ways to render text.  Look in
  1276. ftp.informatik.uni-oldenburg.de: pub/dkbtrace, there are two alphabet pov
  1277. files, alpha.zip and beta.zip, examples of using pov shape_types in
  1278. creating 3D text.  Another way I can think of is to use the
  1279. connect-the-dots utility to create letters. Further possibilities include
  1280. using Vision 3D's extruder to extrude the text and output DXF, then convert
  1281. to pov triangles.  A third method I think may work is to use Paul Bourke's
  1282. "BitSurface" utility which converts bit-maps to DXF, and again convert to pov.
  1283. (Helmut Dotzlaw, dotzlaw@CCU.UMANITOBA.CA)
  1284.  
  1285. ----
  1286.  
  1287. I produce fonts for PoV commercially [see RTNv6n2 for more info.  -EAH].
  1288. For a demo, and some sample letters, have a look in
  1289. ftp.informatik.uni-oldenburg.de pub/dkbtrace/incoming or pub/dkbtrace/utils
  1290. for some of these:
  1291.  
  1292. avantest.zip    38988  21/10/92   5:14
  1293. fntbench.zip    33628  21/02/93  17:25
  1294. fntsamp.zip    132164  23/07/93   5:58
  1295. tms_rom.jpg     27560  21/02/93  17:28
  1296.  
  1297. Kirk2.jpg illustrates the use of the fonts in a more professional capacity.
  1298. (Andrew Haveland-Robinson, andy@OSEA.DEMON.CO.UK)
  1299.  
  1300. ----
  1301.  
  1302.   One of the best utilties I've found for POV is called SP - Dave's Spline-
  1303. Path Generator.  You can find this on the You Can Call Me Ray BBS.  Basically,
  1304. you make a data file of a number of points and some other information, and
  1305. SP will calculate position and rotations for your camera.  You can do
  1306. acceleration/deceleration, etc... with it as well.  Its downfall (at least
  1307. as of version 0.3) is that it only does one frame at a time (you tell it
  1308. which of the N frames to compute).  It's relatively easy to make a batch
  1309. file for this, though.  (Jason Barile, barilejb@ctrvax.vanderbilt.edu)
  1310.  
  1311. ----
  1312.  
  1313. A good many of the utilities for POV-Ray have been designed to use what we
  1314. call ".raw" format (bare vertex data) which can be bound very tightly in a
  1315. hierarchical structure of bounding boxes by a utility by Steve Anger, called
  1316. RAW2POV.  RAW2POV can also do Phong interpolation on the triangles if desired.
  1317. Any serious raytracing of large triangle databases in POV 1.0 is done with
  1318. data that has been processed by RAW2POV.  (Nobody tries it twice without it!)
  1319. (Dan Farmer CIS[70703,1632])
  1320.  
  1321. ----
  1322.  
  1323. POV on Mac utilities:
  1324.  
  1325. Thanks to "The Evil Tofu", I was recently made aware of a collection of
  1326. utilites for POV which have been ported to the Mac by Eduard [esp] Shwan,
  1327. of the Compuserve Group, called POV Mac Utilities 1.1.  With kind permission
  1328. of the author, it has been uploaded to the Internet.
  1329.  
  1330. The application contains the following utilities:
  1331. Coil Generator - Bill Kirby
  1332. Connect the Dots (CDTS) - Truman Brown
  1333. Dat2POV - Drew Wells
  1334. DXF2POV - Aaron A. Collins
  1335. "Lissa" Lissajous Generator - Eduard [esp] Schwan
  1336. POV Suds Generator - Sam Hobbs & Dan Farmer
  1337. Raw2POV - Steve Anger
  1338. Shell Generator - Dan Farmer
  1339. Sponge Generator - Stephen Coy
  1340. Swoop - Douglas Otwell
  1341.  
  1342. Also I think worthy of mention is that Paul D. Bourke's Vision-3D modeller
  1343. for the Mac, which can export DXF files, supports lathing and extruding
  1344. capabilities. Hmm, I wonder if I lathed something and used  Mac POV Utils to
  1345. generate a DXF -> POV?  Paul has also recently written a program,
  1346. BitSurface, which will generate DXF from bitmap files.  Hmm, again....
  1347.  
  1348. Mac POV Utils 1.1 can be found at summex-aim.stanford.edu,
  1349. /info-mac/grf/util/pov-utilities-11.hqx    Freeware.
  1350.  
  1351. Vision-3D and BitSurface can be found at wuarchive.wustl.edu,
  1352. /mirrors/architec    Shareware.
  1353.  
  1354. (Helmut Dotzlaw, dotzlaw@CCU.UMANITOBA.CA)
  1355.  
  1356. ----
  1357.  
  1358. >    Does anyone have a leaf generator ?  a tree generator ? flowers ?
  1359. Look at treebas (tree generator in qbasic (msdos))
  1360.  
  1361. >    Is there a technique for getting that rainbow effect that you see on a
  1362. >      Compact Disc ?
  1363. Look at the texture in bubble.pov (an iridescent, shimmering rainbow smear).
  1364.  
  1365. Both are available by anonymous ftp in
  1366. ftp.informatik.uni-oldenburg.de:pub/dkbtrace/incoming
  1367. mirrored on wuarchive.wustl.edu:graphics/graphics/mirrors/ftp.infor...
  1368. (Tony Audas, taudas@UMCC.UMICH.EDU)
  1369.  
  1370. --------
  1371.  
  1372. Xmgf 1.1 Motif based 3D Object Viewer
  1373.  
  1374. xmgf can be found on
  1375.     export.lcs.mit.edu in /contrib
  1376. files:
  1377.     xmgf.README
  1378.     xmgf.1.1.tar.Z
  1379. You'll need MOTIF and patience (:-))
  1380. Have fun and feedback will be welcomed (good and bad!:-(   
  1381. (Paul Hoad, P.Hoad@ee.surrey.ac.uk)
  1382.  
  1383. --------
  1384.  
  1385. SIGGRAPH May issue on-line
  1386.  
  1387. By popular demand, we have created a tar'ed and compress'ed version of the
  1388. May '93 experimental online edition of the SIGGRAPH "Computer Graphics"
  1389. newsletter.  It is in file
  1390.  
  1391.    ~ftp/publications/May_93_online/May_93_online.tar.Z
  1392.  
  1393. available via anonymous ftp from siggraph.org.  This file contains the
  1394. PostScript version of the newsletter.  It is 3.2MB in size compressed and
  1395. uncompresses to 15MB.  (Sue Mair, mair@ucs.ubc.ca)
  1396.  
  1397. --------
  1398.  
  1399. A friend of mine Jason Wilson created a very basic radiosity package.
  1400. This package runs on the Next Platform(version 3.0 or higher).
  1401.  
  1402.    ftp.cs.rose-hulman.edu
  1403.   under
  1404.     pub/CS_dept
  1405.   file
  1406.     NeXtrad.tar.Z
  1407.  
  1408. (Leslie Donaldson, Donaldlf@cs.rose-hulman.edu)
  1409.  
  1410. --------
  1411.  
  1412. MacCubeView 1.0.0
  1413.  
  1414. A 3D image display programme for the Macintosh is now available via anonymous
  1415. ftp from sun.irus.rri.uwo.ca (129.100.7.136).  This programme is suitable for
  1416. viewing 3D eight bit medical images.  A 3D MR image of the author's head is
  1417. included.  (Daniel W. Rickey, drickey@irus.rri.uwo.ca)
  1418.  
  1419. --------
  1420.  
  1421. Some weeks ago we sent a public message with the press-release of Real-Light
  1422. 1.0, a radiosity based rendering package.  People interested in watching some
  1423. RGB image of environments created by Real-Light can take them by anonymous ftp
  1424. at:
  1425.  
  1426.     ftp.iunet.it (192.106.1.6)
  1427.  
  1428. in the directory:
  1429.  
  1430.     ~ftp/vendor/Atma
  1431.  
  1432. (Cristiano Palazzini, atma@relay1.iunet.it)
  1433.  
  1434. --------
  1435.  
  1436. There is an interesting 3D Space Shuttle model database in .dxf (AutoCad),
  1437. .nff (neutral file format for Sense8) and .vid (amiga VideoScape)
  1438.  
  1439. ftp anonymous:  artemis.arc.nasa.gov  (128.102.115.149)
  1440. in /sig-wtk/models directory
  1441. (Emerico Natonek, natonek@imtsg5.epfl.ch)
  1442.  
  1443. --------
  1444.  
  1445. |> Is there any public domain code out there for generating polygonal models
  1446. |> of human faces given a small set of parameters?
  1447.  
  1448. There are some things available by anonymous ftp to wuarchive.wustl.edu,
  1449. under graphics/graphics/misc/facial-animation.
  1450. (James R. (Jim Bob) Bill, jimbob@rainier.ucsc.edu)
  1451.  
  1452. --------
  1453.  
  1454. Thanx to Juhana the PostScript version of my thesis can be obtained from:
  1455.     nic.funet.fi:pub/sci/papers/graphics/suma93.tar.gz
  1456.         (1115072 bytes)
  1457.  
  1458. He promises that it will be made available from:
  1459.     princeton.edu:pub/Graphics/Papers/suma93.tar.gz
  1460.  
  1461. The file is GNU zip compressed.  (He says GNU zip gives him better
  1462. compression.)  So `gunzip' has to be used for uncompression.
  1463. (Sumanta N. Pattanaik, sumant@saathi.ncst.ernet.in)
  1464.  
  1465. %A Sumanta N. Pattanaik
  1466. %T Computational Methods for Global Illumination and Visualisation of Complex
  1467. 3D Environments
  1468. %R PhD thesis
  1469. %I Birla Institute of Technology & Science, Computer Science Department,
  1470. Pilani, India
  1471. %D November 1990
  1472. %K adjoint illumination equations, particle model of light, random walk,
  1473. importance sampling
  1474.  
  1475. --------
  1476.  
  1477. Given the number of modelers coming out for ray tracers (IRIT 4.0 should be
  1478. out soon, by the way), I thought I should give a plug to Ken Shoemake's
  1479. wonderful ArcBall technique for interactive rotations of objects.  The
  1480. original paper is:
  1481.  
  1482. AUTHOR       = "Ken Shoemake",
  1483. TITLE        = "ARCBALL: A User Interface for Specifying Three-Dimensional
  1484. Orientation Using a Mouse",
  1485. PROCEEDINGS  = Graphics Interface '92,
  1486. YEAR         = 1992,
  1487. PAGES        = pp151
  1488.  
  1489. It's a very intuitive, easy to implement technique which can be used for
  1490. unconstrained or constrained rotations.  I needed one hint to understand the
  1491. full functionality of the technique; other than that, it was obvious to use.
  1492. The short paper (available on the net for the Mac, see below) explains it all.
  1493. (Eric Haines)
  1494.  
  1495. ----
  1496.  
  1497. An example written for the Mac by Shoemake is available on linc.cis.upenn.edu
  1498. in the directory /pub/graphics/arcball.  The file arcball is the example,
  1499. while the arcball-paper is the GI paper.
  1500.  
  1501. Note: to decode the files, you need to use BinHex 4.0.  BinHex 5.0
  1502. will not work for these files, unless you are willing to edit off
  1503. the heading portion of them.
  1504. (Duanfeng He (Jackson), Duanfeng.He@AtlantaGa.NCR.com)
  1505.  
  1506. ----
  1507.  
  1508. I have a version of Shoemake's ArcBall I wrote and I'm making it available.
  1509. You'll have to do some work, however, as it uses my graphics library.  You
  1510. have to know enough about programming in your own 3d library to be able to
  1511. convert some types and routines, although it will be _really_ simple ...  a
  1512. matter of finding equivalents for types such as vectors and matrices, and
  1513. using your own draw routines.  If you use something like GL, it will be
  1514. trivial, as that's what my graphics library is based on.
  1515.  
  1516. It's available on
  1517.     cs.columbia.edu:pub/bm/arcball
  1518.  
  1519. That said, I'd like to thank Ken for his excellent paper.  The ARCBALL concept
  1520. aside, the arc drawing routines are pretty darn cool.  :-)
  1521.  
  1522. (Blair MacIntyre, bm@shadow.columbia.edu)
  1523.  
  1524. --------
  1525.  
  1526. Hidden surface renderer (well, it's not really ray tracing related, but I'm
  1527. not a purist):
  1528.  
  1529. >I'm after a Gourand Z-buffer polygon scanline example. The one in
  1530. >Gems I (PolyScan) looks pretty good but as poly_scan.c is dated
  1531. >1985 and 1989, I was wondering if any improvements or optimizations
  1532. >have been made (or bug fixes). I haven't used the code as it is
  1533. >but am looking around before writing my own redering library.
  1534.  
  1535. You may want to grab libXG-2.0.tar.Z from ftp.ai.mit.edu down
  1536. (pub/users/sundar).  It has examples of sutherland-hodgman clipping, z-buffer
  1537. scanline code etc.  The doc directory contains a postscript manual which
  1538. documents all the functions.  (This is a 3-d graphics library that runs under
  1539. X).
  1540.  
  1541. It doesn't aim to be super-fast, but it does handle multiple-polygons with
  1542. loops (or holes), inter-penetrating polygons, polygons with cyclical overlap
  1543. etc.  (Sundar Narasimhan, sundar@ai.mit.edu)
  1544.  
  1545. --------
  1546.  
  1547. Least impressive ray tracer dept:
  1548.  
  1549. A recent issue of RS/Magazine has an article on using the IBM RS/6000 for
  1550. mechanical CAD and they found it worthwhile to include a picture of an RX/6000
  1551. displaying a ray traced picture of a first level sphereflake.  They liked it
  1552. so much they used it three times!  But, since it's only first level (a big
  1553. sphere surrounded by several spheres just a bit smaller) it doesn't exactly
  1554. cry out that the RS/6000 is a power cruncher, does it.  (Tim O'Connor)
  1555.  
  1556. -------------------------------------------------------------------------------
  1557.  
  1558. Simple Sphere Tessellation, by Mike Castle (mcastle@cs.umr.edu)
  1559.  
  1560. How sphere.c works (at wustl and other places):
  1561.  
  1562. Start off with 6 points on a unit sphere (1,0,0), (-1,0,0), (0,1,0),
  1563. (0,-1,0), (0,0,1), (0,0,-1). These form a octahedron.  Each of the 8 triangles
  1564. is taken one at a time.
  1565. Take one triangle, and choose its midpoint (by averaging the coordinates of
  1566. the three points).  Normalize that point, so it's now projected back onto the
  1567. unit sphere.  Replace the original triangle with 3 triangles, based on the
  1568. original 3 points, and the new 4th point.  Recurse.  (the level of recursion
  1569. is user specified).
  1570.  
  1571. Voila, tessellated sphere.
  1572.  
  1573. -------------------------------------------------------------------------------
  1574.  
  1575. Syndesis CD-ROM Review, by Eric Haines
  1576.  
  1577. This is the CD-ROM mentioned last issue.  It contains more than 600 models and
  1578. more than 400 textures, and costs $200.  I received a review copy during
  1579. SIGGRAPH, and it's an interesting collection.  The collection was made as a
  1580. way of publicizing Syndesis' InterChange Plus software, which converts 3D
  1581. model data in various formats.
  1582.  
  1583. Though it's ISO-9660 and all that, I still had problems reading it on the
  1584. Gateway CDROM drive next to me.  I don't know where the problem lay, but our
  1585. systems administrator said such problems are fairly common.  I was able to
  1586. read the CDROM on other drives just fine.
  1587.  
  1588. There are, of course, a ton of files on the disk.  There should also be more
  1589. disks in the future, and Mr. Foust has a policy in which contributors whose
  1590. creations are accepted get a free disk; contact him for more information.  In
  1591. fact, if you can identify yourself as the author of any of the works on this
  1592. first disk, you can get a free disk (a bit of a "key locked in the treasure
  1593. chest" situation, admittedly, since you pretty much need the disk to see if
  1594. your creation is on it).
  1595.  
  1596. The book that comes with the disk is quite useful, as it has thumbnail
  1597. grayscale images of some of the textures and some of the models included on the
  1598. disk.  Unfortunately, not all of them are shown; only about 160 of the 600
  1599. models are displayed, and the synthesized textures are not shown.  However,
  1600. the models are all listed with descriptive titles, and there is also an index
  1601. which can be pretty helpful.  On the disk there are summary images of the
  1602. textures available, showing thumbnail sketches of all textures available.
  1603.  
  1604. The models come in 3D Studio, Autocad DXF, Imagine IOB, Wavefront OBJ, and
  1605. Lightwave formats.  (I should note that it's pretty easy to convert from IOB
  1606. to many formats by using the converter at wuarchive.wustl.edu in
  1607. /graphics/graphics/objects/TDDD).  The models vary in quality, of course, but
  1608. the disk is not a collection of every free model ever made; while limited to
  1609. what was out there for free, there are few trivial or poorly modeled objects.
  1610. The scope is quite amazing, and Syndesis has done quite a job in making this
  1611. collection.
  1612.  
  1613. On the disk there are some interesting models from Viewpoint which were
  1614. supposed to be in their SIGGRAPH '93 free distribution, but in fact were not
  1615. distributed there (they distributed a bunch of beach related models instead):
  1616. a car, Big Ben, a deer head, elbow bones, and various military hardware.
  1617.  
  1618. The textures are all tileable and in TIFF/GIF/IFF formats.  It's a little
  1619. annoying that the tiff images do not have the standard "*.tif" suffix.  The
  1620. textures overall are usable, but nothing fantastic.  The synthetic textures
  1621. (some 262 of these) are 256x256 and some are pretty interesting, but they tend
  1622. to have the same feel to them.  The other textures (about 150 of these,
  1623. described below) are fairly low resolution, 128x128 at very best.  Some of
  1624. these are tileable simply by doing mirroring along the x and y axes.  All in
  1625. all, some cute stuff, but don't expect a professional quality tileable wood or
  1626. marble here.
  1627.  
  1628. In addition, in a demos directory there are a bunch of stills and FLI
  1629. animations for the various companies whose work is on the disk.  There is also
  1630. a text area with an archive of the Imagine and Lightwave electronic mailing
  1631. lists - literally megabytes of advice here.
  1632.  
  1633. All in all, this is a great resource for amateurs and professionals who make
  1634. 3D images.  Some of the models are incredible, and the textures, while not
  1635. particularly fantastic in and of themselves, I consider pure icing.  There's a
  1636. lot to explore here.  Considering that a single model from Viewpoint can cost
  1637. much more than this entire disk, if you're a professional and use even just a
  1638. few models from this CDROM you're ahead of the game.
  1639.  
  1640. ----
  1641.  
  1642. John Foust notes:
  1643.  
  1644. About 135 of the textures were captured and massaged from hand-made, public
  1645. domain Macintosh desktop textures - PPAT resources, they call them.  The
  1646. others were generated by a super Mac program called Texture Synth, which uses
  1647. a few basic seed textures, recombined with color and multiple sine-wave
  1648. textures.  They look very nice, a little synthetic at times, but in an
  1649. organic-synthetic sort of way...
  1650.  
  1651. Contact: John Foust / Syndesis Corporation <76004.1763@CompuServe.COM>
  1652.  
  1653. -------------------------------------------------------------------------------
  1654.  
  1655. Ray Tracing Related Abstracts from the Proceedings of Graphics Interface '93
  1656. (May 19-21, 1993, Toronto, Ont. CA).
  1657.  
  1658. These proceedings are available from Morgan Kaufmann Publishers, 415-965-4081.
  1659. ISBN 0-9695338-2-9
  1660.  
  1661. %A Alain Fournier
  1662. %A Pierre Poulin
  1663. %T A Ray Tracing Accelerator Based on a Hierarchy of 1D Sorted Lists
  1664.  
  1665. %A Jon Genetti
  1666. %A Dan Gordon
  1667. %T Ray Tracing With Adaptive Supersampling in Object Space
  1668.  
  1669. %A David P. Dobkin
  1670. %A Don P. Mitchell
  1671. %T Random-Edge Discrepancy of Supersampling Patterns
  1672.  
  1673. -------------------------------------------------------------------------------
  1674.  
  1675. Ray Tracing Papers in the First Bilkent Computer Graphics Conference, ATARV-93,
  1676. Ankara, Turkey, July 1993
  1677.  
  1678. "A Parallel Implementation of a Ray Tracer on a Shared Memory Multiprocessor"
  1679. E. Camahort, G. Quintana, R. Vivo, and A. M. Vidal,
  1680. Departamento de Sistemas Informaticos y Computacion,
  1681. Universidad Politecnica de Valencia, SPAIN.
  1682.  
  1683. "An Efficient Parallel Spatial Subdivision Algorithm for Parallel Ray Tracing
  1684. Complex Scenes"
  1685. V. Isler, C. Aykanat, and B. Ozguc,
  1686. Dept. of Computer Eng. and Information Science, Bilkent University, TURKEY.
  1687.  
  1688. "Modelling Rodin's Thinker: A Case Study Combining PHIGS and Ray-tracing"
  1689. G. Williams, A. Murta, and T. Howard,
  1690. Dept. of Computer Science, University of Manchester, U.K.
  1691.  
  1692. "A File Format for Interchange of Realistic Scene Descriptions"
  1693. P. Guitton and C. Schlick,
  1694. LaBRI, Talence, FRANCE.
  1695.  
  1696. -------------------------------------------------------------------------------
  1697.  
  1698. Fourth Eurographics Workshop on Rendering, Paris, France June 14-16, by
  1699.     Francois Sillion (sillion@dmi.ens.fr)
  1700.  
  1701. [There may be some proceedings left for sale, contact Francois for information]
  1702.  
  1703. The program included 24 contributed papers on a variety of topics and three
  1704. invited presentations.
  1705.  
  1706.     Dynamic Stratification
  1707.         Andrew Glassner
  1708.     Progressive Ray Refinement for Monte Carlo Radiosity
  1709.         Martin Feda, Werner Purgathofer
  1710.     Invited: Realism in real-time ?
  1711.         Erik Jansen
  1712.     Making Shaders More Physically Plausible
  1713.         Robert Lewis
  1714.     Illumination of Dense Foliage Models
  1715.         Christopher Patmore
  1716.     A Customizable Reflectance Model for Everyday Rendering
  1717.         Christophe Schlick
  1718.     Importance and Discrete Three Point Transport
  1719.         Larry Aupperle, Pat Hanrahan
  1720.     A Continuous Adjoint Formulation for Radiance Transport
  1721.         Per Christensen, David Salesin, Tony DeRose
  1722.     Wavelet Projections for Radiosity
  1723.         Peter Schroeder, Steven Gortler, Michael Cohen, Pat Hanrahan
  1724.     Continuous Algorithms for Visibility: The Space Searching Approach
  1725.         Jenny Zhao, David Dobkin
  1726.     Invited paper : Viewpoint Analysis of Drawings and Paintings
  1727.     Rendered Using Multiple Viewpoints: Cases Containing Rectangular Objects
  1728.         Yoshihisa Shinagawa, Saeko Miyoshi, Tosiyasu Kunii
  1729.     Constant-Time Filtering by Singular Value Decomposition
  1730.         Craig Gotsman
  1731.     Measuring the Quality of Antialiased Line Drawing Algorithms
  1732.         Terence Lindgren, John Weber
  1733.     Invited: "How to solve it ?"
  1734.         Pat Hanrahan
  1735.     Numerical Integration for Radiosity in the presence of Singularities
  1736.         Peter Schroeder
  1737.     Optimal Hemicube Sampling
  1738.         Nelson Max, Roy Troutman
  1739.     Fast Calculation of Accurate Form Factors
  1740.         Georg Pietrek
  1741.     Grouping of Patches in Progressive Radiosity
  1742.         Arjan Kok
  1743.     Blockwise Refinement -- A New Method for Solving the Radiosity Problem
  1744.         Gunther Greiner, Wolfgang Heidrich, Philipp Slusallek
  1745.     Analysis and Acceleration of Progressive Refinement Radiosity Method
  1746.         Min-Zhi Shao, Norman Badler
  1747.     Texture Mapping as a fundamental Drawing Primitive
  1748.         Paul Haeberli, Mark Segal
  1749.     A Methodology for Description of Texturing Methods
  1750.         Pascal Guitton, Christophe Schlick
  1751.     Visualization of Mixed Scenes based on Volumes and Surfaces
  1752.         Dani Tost, Anna Puig, Isabel Navazo
  1753.     Physically Realistic Volume Visualization for Interactive Image Analysis
  1754.         H.T.M.Van der Voort, H.J. Noordmans, J.M. Messerli,
  1755.         A.W.M. Smeulders
  1756.     Reconstruction of Illumination functions using Bicubic Hermite
  1757.     Interpolation
  1758.         Rui Manuel Bastos, Antonio Augusto de Sousa,
  1759.         Fernando Nunes Ferreira
  1760.     Mesh Redistribution in Radiosity
  1761.         Miguel P.N. Aguas, Stefan Muller
  1762.     Accurate Rendering of Curved Shadows and Interreflections
  1763.         G.R. Jones, C.G. Christou, B.G. Cumming, A.J. Parker
  1764.  
  1765. -------------------------------------------------------------------------------
  1766.  
  1767. Gamma Correction Frequently Asked Questions, by Graeme Gill
  1768.     (graeme@labtam.labtam.oz.au)
  1769.  
  1770. I get regular questions about gamma correction since I go to great pains to
  1771. deal with it properly in xli (the image loader program I maintain).
  1772.  
  1773. Here is an explanation I often use to answer these questions.
  1774.  
  1775. ########
  1776.  
  1777. "A note on gamma correction and images"
  1778.  
  1779. Author: Graeme W. Gill
  1780.     graeme@labtam.oz.au
  1781.  
  1782. Date: 93/5/16
  1783.  
  1784.  
  1785. "What is all this gamma stuff anyway?"
  1786. --------------------------------------
  1787.  
  1788. Although it would be nice to think that "an image is an image", there are a
  1789. lot of complications.  Not only are there a whole bunch of different image
  1790. formats (gif, jpeg, tiff etc etc), there is a whole lot of other technical
  1791. stuff that makes dealing with images a bit complicated.  Gamma is one of those
  1792. things.  If you've ever downloaded images from BBS or the net, you've probably
  1793. noticed (with most image viewing programs) that some images look ok, some look
  1794. too dark, and some look too light.  "Why is this?" you may ask.  This, is
  1795. gamma correction (or the lack of it).
  1796.  
  1797.  
  1798. Why do we need gamma correction at all?
  1799. ---------------------------------------
  1800.  
  1801. Gamma correction is needed because of the nature of CRTs (cathode ray tubes -
  1802. the monitors usually used for viewing images).  If you have some sort of real
  1803. live scene and turn it into a computer image by measuring the amount of light
  1804. coming from each point of the scene, then you have created a "linear" or
  1805. un-gamma-corrected image.  This is a good thing in many ways because you can
  1806. manipulate the image as if the values in the image file were light (i.e.
  1807. adding and multiplying will work just like real light in the real world).  Now
  1808. if you take the image file and turn each pixel value into a voltage and feed
  1809. it into a CRT, you find that the CRT _doesn't_ give you an amount of light
  1810. proportional to the voltage.  The amount of light coming from the phosphor in
  1811. the screen depends on the the voltage something like this:
  1812.  
  1813. Light_out = voltage ^ crt_gamma
  1814.  
  1815. So if you just dump your nice linear image out to a CRT, the image will look
  1816. much too dark.  To fix this up you have to "gamma correct" the image first.
  1817. You need to do the opposite of what the CRT will do to the image, so that
  1818. things cancel out, and you get what you want.  So you have to do this to your
  1819. image:
  1820.  
  1821. gamma_corrected_image = image ^ (1/crt_gamma)
  1822.  
  1823. For most CRTs, the crt_gamma is somewhere between 1.0 and 3.0.
  1824.  
  1825.  
  1826. If that is all it is, why does it seem so complicated?
  1827. ------------------------------------------------------
  1828.  
  1829. The problem is that not all display programs do gamma correction.  Also not
  1830. all sources of images give you linear images (Video cameras or video signals
  1831. in general).  Because of this, a lot of images already have some gamma
  1832. correction done to them, and you are rarely sure how much.  If you try and
  1833. display one of those images with a program that does gamma correction for you,
  1834. the image gets corrected twice and looks way to light.  If you display one of
  1835. those images with a program that doesn't do gamma correction, then it will
  1836. look vaguely right, but not perfect, because the gamma correction is not
  1837. exactly right for you particular CRT.
  1838.  
  1839.  
  1840. Whose fault is all this?
  1841. ------------------------
  1842.  
  1843. It is really three things.  One is all those display programs out there that
  1844. don't do gamma correction properly.  Another is that most image formats don't
  1845. specify a standard gamma, or don't have some way or recording what their gamma
  1846. correction is.  The third thing is that not many people understand what gamma
  1847. correction is all about, and create a lot of images with varying gamma's.
  1848.  
  1849. At least two file formats do the right thing.  The Utah Graphics Toolkit .rle
  1850. format has a semi-standard way of recording the gamma of an image.  The JFIF
  1851. file standard (that uses JPEG compression) specifies that the image to be
  1852. encoded must have a gamma of 1.0 (i.e. a linear image - but not everyone
  1853. obeys the rules).
  1854.  
  1855. Some image loaders (for instance xli - an X11 image utility) allow you to
  1856. specify not only the gamma of the monitor you are using, but the individual
  1857. gamma values of image you are trying to view.  Other image viewers (e.g. xv,
  1858. another X11 image program) and utilities (e.g. the pbm toolkit) provide ways
  1859. of changing the gamma of an image, but you have to figure out the overall
  1860. gamma correction yourself, allowing for undoing any gamma correction the image
  1861. has, and then the gamma correction you need to suite your CRT monitor.
  1862.  
  1863. [Note that xv 2.21 doesn't provide an easy way of modifying the gamma of an
  1864. image.  You need to adjust the R, G and B curves to the appropriate gamma in
  1865. the ColEdit controls.  Altering the Intensity in the HSV controls doesn't do
  1866. the right thing, as it fails to take account of the effect gamma has on H and
  1867. S.  This tends to give a tint to the image.]
  1868.  
  1869.  
  1870. How can I figure out what my viewer does, or what gamma my screen has?
  1871. ----------------------------------------------------------------------
  1872.  
  1873. The simplest way to do that is to try loading the file chkgamma.jpg (provided
  1874. with xli distribution), which is a JFIF jpeg format file containing two
  1875. grayscale ramps.  The ramps are chosen to look linear to the human eye, one
  1876. using continuous tones, and the other using dithering.  If your viewer does
  1877. the right thing and gamma corrects images, then the two ramps should look
  1878. symmetrical, and the point at which they look equally bright should be almost
  1879. exactly half way from the top to the bottom.  (To find this point it helps if
  1880. you move away a little from the screen, and de-focus your eyes a bit.)
  1881.  
  1882. If your viewer doesn't do gamma correction, then left hand ramp will have
  1883. a long dark part and a short white part, and the point of equal brightness
  1884. will be above the center.
  1885.  
  1886. If your viewer does have a way of setting the right amount of gamma correction
  1887. for a display, then if the equal brightness point is above center increase the
  1888. gamma, and decrease it if it is below the center. The value will usually be
  1889. around 2.2.
  1890.  
  1891. [with xli for instance, you can adjust the display gamma with the -dispgamma
  1892. flag, and once you've got it right, you can set the DISPLAY_GAMMA environment
  1893. variable in your .profile]
  1894.  
  1895.  
  1896. How do I figure out what the gamma of an image is?
  1897. --------------------------------------------------
  1898.  
  1899. This is the most tricky bit.  As a general rule it seems that a lot of true
  1900. color (i.e. 24 bit, .ppm .jpg) images have a gamma of 1.0 (linear), although
  1901. there are many about that have some gamma correction.  It seems that the
  1902. majority of pseudo color images (i.e. 8 bit images with color maps - .gif
  1903. etc.)  are gamma corrected to some degree or other.
  1904.  
  1905. If your viewer does gamma correction then linear images will look good, and
  1906. gamma corrected images will look too light.
  1907.  
  1908. If your viewer doesn't do gamma correction, then linear images will look too
  1909. dark, and gamma corrected images will ok.
  1910.  
  1911.  
  1912. Why Linear images are sometimes not such a good thing
  1913. -----------------------------------------------------
  1914.  
  1915. One of the reason that many high quality formats (such as Video) use gamma
  1916. correction is that it actually makes better use of the storage medium.  This
  1917. is because the human eye has a logarithmic response to light, and gamma
  1918. correction has a similar compression characteristic.  This means images could
  1919. make better use of 8 bits per color (for instance), if they used gamma
  1920. correction.  The implication, though, is that every time you want to do any
  1921. image processing you should convert the 8 bit image to 12 or so linear bits to
  1922. retain the same accuracy.  Since little popular software does this, and none
  1923. of the popular image formats can agree on a standard gamma correction factor,
  1924. it is difficult to justify gamma corrected images at the popular level.
  1925.  
  1926. If some image formats can standardize on a particular gamma, and if image
  1927. manipulation software takes care to use extra precision when dealing with
  1928. linearized internal data, then gamma corrected distribution of images would be
  1929. a good thing.
  1930.  
  1931. (I am told that the Kodak PhotoCD format for instance, has a standard gamma
  1932. correction factor that enables it to get the highest quality out of the bits
  1933. used to hold the image).
  1934.  
  1935. -------------------------------------------------------------------------------
  1936.  
  1937. 3D Studio Rendering, by Chris Williams (chrisw@fciad2.bsd.uchicago.edu)
  1938.  
  1939. >     I've read numerous times in this newsgroup that Autodesk 3d Studio v2 
  1940. >doesn't support ray-tracing. I'm just wondering how one renders images
  1941. >with lights/objects casting shadows as well as reflection mapping materials
  1942. >without raytracing. Can someone tell me what I'm missing here?
  1943.  
  1944.    Shadows are done via Z-buffering.  Imagine that you wish to have an object
  1945. cast a shadow on a floor.  Render the scene once from the point of view of the
  1946. shadow-casting spotlight.  The areas that are obscured in that image (the
  1947. underside of the object and part of the floor) will be in shadow when rendered
  1948. from the regular camera.  When the scene is actually rendered that image
  1949. (which also contains depth information i.e.  how far each surface was from the
  1950. shadow-spot) is used to to determine what is and isn't in shadow.
  1951.  
  1952.    Reflections are done with reflection maps or cubic environment maps.  Take
  1953. the example of a chrome ball on a checkered floor (please).  Place the camera
  1954. *inside* the chrome ball.  Render six images, one in each of the cardinal
  1955. directions, square.  These six (pos X, neg X, pos Y, neg Y, pos Z and neg Z)
  1956. are combined into one image that is "wrapped around" the ball.  It usually
  1957. works pretty well.  Frankly, most people pay little attention to the content
  1958. of a reflection, and it's possible to cheat like a professional wrestling
  1959. villian.  One other advantage of reflection maps, once the reflected items are
  1960. in the map, if they aren't otherwise visible in the scene, they no longer need
  1961. to be in the scene.  In raytracing, every reflected object has to be there,
  1962. and costs quite a bit.  If your object is a brushed metal, for instance, you
  1963. can just paint blobs of color and blur the whole thing and use *that* as your
  1964. reflection map.
  1965.  
  1966. -------------------------------------------------------------------------------
  1967.  
  1968. Ray-Bezier Patch Intersection, by Chuck McKinley, Max Froumentin
  1969.     (mckinley@fed3005.ne1300.ingr.com, froument@lifl.lifl.fr)
  1970.  
  1971. Chuck McKinley writes:
  1972.  
  1973. If some kind person has access to a mathematical package such as Mathematica,
  1974. Maple,... I would like to ask you for the solution to the following problem.
  1975. I sometimes have algebra problems like this where I would like a simplified
  1976. symbolic solution. Is there a FTP-able package out there that can handle such
  1977. beasts?
  1978.  
  1979. I would like to solve the following ray - Bezier patch intersection
  1980. for the scalar constant t in:
  1981.  
  1982. P                    + t * V                =  Q(u,w)
  1983.  (origin point in 3D)       (dir vector 3D)
  1984.  
  1985. -----
  1986.  
  1987. Max Froumentin replies:
  1988.  
  1989. Well, there is a formula.  But you probably don't want to know it:  One usual
  1990. method is to write the Bezier parametric equation (Q(u,v)=...)  in the form of
  1991. an implicit surface (f(x,y,z)=0 where f is a polynomial).  You can then insert
  1992. the parametric equations of your ray and get a equation in t, giving you the
  1993. intersection points.  That's all right for low degree surfaces like planes or
  1994. quadrics.  But for a Bezier patch of parametric degree n, the resulting
  1995. implicit equation is of degree 2n^2.  As you use degree 3 Bezier patches, you
  1996. will get an implicit equation of degree 18!  Even if you type the whole
  1997. formula in your program, you probably know of the extremely low accuracy of
  1998. high-degree polynomials in computers...
  1999.  
  2000. Instead, people use approximation methods, like two-dimensional Newton
  2001. iteration.  See the book by Glassner on ray-tracing for further details, or
  2002. look at the POV source code.
  2003.  
  2004. -------------------------------------------------------------------------------
  2005.  
  2006. Turbulence and Noise, by Ken Perlin
  2007.  
  2008. [Since course notes are so hard to get, I thought I would reprint this.
  2009. Bernie Kirby sent this to Thomas Setzer, who posted it, and now it's here.]
  2010.  
  2011.           EXCERPTED FROM SIGGRAPH 92, COURSE 23
  2012.                PROCEDURAL MODELING
  2013.  
  2014.                    Ken Perlin
  2015.                New York University
  2016.  
  2017. 3.6 TURBULENCE AND NOISE
  2018.  
  2019. 3.6.1 The turbulence function
  2020.  
  2021. The turbulence function, which you use to make marble, clouds, explosions,
  2022. etc., is just a simple fractal generating loop built on top of the noise
  2023. function.  It is not a real turbulence model at all.  The key trick is the use
  2024. of the fabs() function, which makes the function have gradient discontinuity
  2025. "fault lines" at all scales.  This fools the eye into thinking it is seeing
  2026. the results of turbulent flow.  The turbulence() function gives the best
  2027. results when used as a phase shift, as in the familiar marble trick:
  2028.  
  2029.     sin(point + turbulence(point) * point.x);
  2030.  
  2031. Note the second argument below, lofreq, which sets the lowest desired
  2032. frequency component of the turbulence.  The third, hifreq, argument is used by
  2033. the function to ensure that the turbulence effect reaches down to the single
  2034. pixel level, but no further.  I usually set this argument equal to the image
  2035. resolution.
  2036.  
  2037.  
  2038. float turbulence(point, lofreq, hifreq)
  2039. float point[3], freq, resolution;
  2040. {
  2041.     float noise3(), freq, t, p[3];
  2042.  
  2043.     p[0] = point[0] + 123.456;
  2044.     p[1] = point[1];
  2045.     p[2] = point[2];
  2046.  
  2047.     t = 0;
  2048.     for (freq = lofreq ; freq < hifreq ; freq *= 2.) {
  2049.         t += fabs(noise3(p)) / freq;
  2050.         p[0] *= 2.;
  2051.         p[1] *= 2.;
  2052.         p[2] *= 2.;
  2053.     }
  2054.     return t - 0.3; /* readjust to make mean value = 0.0 */
  2055. }
  2056.  
  2057.  
  2058. 3.6.2 The noise function
  2059.  
  2060. noise3 is a rough approximation to "pink" (band-limited) noise, implemented by
  2061. a pseudorandom tricubic spline.  Given a vector in 3-space, it returns a value
  2062. between -1.0 and 1.0.  There are two principal tricks to make it run fast:
  2063.  
  2064. - Precompute an array of pseudo-random unit length gra- dients g[n].
  2065.  
  2066. - Precompute a permutation array p[] of the first n integers.
  2067.  
  2068. Given the above two arrays, any integer lattice point (i,j,k) can be quickly
  2069. mapped to a pseudorandom gradient vector by:
  2070.  
  2071.     g[ (p[ (p[i] + j) % n ] + k) % n]
  2072.  
  2073. By extending the g[] and p[] arrays, so that g[n+i]=g[i] and p[n+i]=p[i], the
  2074. above lookup can be replaced by the (somewhat faster):
  2075.  
  2076.     g[ p[ p[i] + j ] + k ]
  2077.  
  2078. Now for any point in 3-space, we just have to do the following two steps:
  2079.  
  2080. (1) Get the gradient for each of its surrounding 8 integer lattice points as
  2081. above.
  2082.  
  2083. (2) Do a tricubic hermite spline interpolation, giving each lattice point the
  2084. value 0.0.
  2085.  
  2086. The second step above is just an evaluation of the hermite derivative basis
  2087. function 3 * t * t - 2 * t * t * t in each by a dot product of the gradient at
  2088. the lattice.
  2089.  
  2090. Here is my implementation in C of the noise function.  Feel free to use it, as
  2091. long as you reference where you got it.  :-)
  2092.  
  2093.  
  2094. /* noise function over R3 - implemented by a pseudorandom tricubic spline */
  2095.  
  2096. #include <stdio.h>
  2097. #include <math.h>
  2098.  
  2099. #define DOT(a,b) (a[0] * b[0] + a[1] * b[1] + a[2] * b[2])
  2100.  
  2101. #define B 256
  2102.  
  2103. static p[B + B + 2];
  2104. static float g[B + B + 2][3];
  2105. static start = 1;
  2106.  
  2107. #define setup(i,b0,b1,r0,r1) \
  2108.     t = vec[i] + 10000.; \
  2109.     b0 = ((int)t) & (B-1); \
  2110.     b1 = (b0+1) & (B-1); \
  2111.     r0 = t - (int)t; \
  2112.     r1 = r0 - 1.;
  2113.  
  2114. float noise3(vec)
  2115. float vec[3];
  2116. {
  2117.     int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
  2118.     float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
  2119.     register i, j;
  2120.  
  2121.     if (start) {
  2122.         start = 0;
  2123.         init();
  2124.     }
  2125.  
  2126.     setup(0, bx0,bx1, rx0,rx1);
  2127.     setup(1, by0,by1, ry0,ry1);
  2128.     setup(2, bz0,bz1, rz0,rz1);
  2129.  
  2130.     i = p[ bx0 ];
  2131.     j = p[ bx1 ];
  2132.  
  2133.     b00 = p[ i + by0 ];
  2134.     b10 = p[ j + by0 ];
  2135.     b01 = p[ i + by1 ];
  2136.     b11 = p[ j + by1 ];
  2137.  
  2138. #define at(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
  2139.  
  2140. #define surve(t) ( t * t * (3. - 2. * t) )
  2141.  
  2142. #define lerp(t, a, b) ( a + t * (b - a) )
  2143.  
  2144.     sx = surve(rx0);
  2145.     sy = surve(ry0);
  2146.     sz = surve(rz0);
  2147.  
  2148.  
  2149.     q = g[ b00 + bz0 ] ; u = at(rx0,ry0,rz0);
  2150.     q = g[ b10 + bz0 ] ; v = at(rx1,ry0,rz0);
  2151.     a = lerp(sx, u, v);
  2152.  
  2153.     q = g[ b01 + bz0 ] ; u = at(rx0,ry1,rz0);
  2154.     q = g[ b11 + bz0 ] ; v = at(rx1,ry1,rz0);
  2155.     b = lerp(sx, u, v);
  2156.  
  2157.     c = lerp(sy, a, b);          /* interpolate in y at lo x */
  2158.  
  2159.     q = g[ b00 + bz1 ] ; u = at(rx0,ry0,rz1);
  2160.     q = g[ b10 + bz1 ] ; v = at(rx1,ry0,rz1);
  2161.     a = lerp(sx, u, v);
  2162.  
  2163.     q = g[ b01 + bz1 ] ; u = at(rx0,ry1,rz1);
  2164.     q = g[ b11 + bz1 ] ; v = at(rx1,ry1,rz1);
  2165.     b = lerp(sx, u, v);
  2166.  
  2167.     d = lerp(sy, a, b);          /* interpolate in y at hi x */
  2168.  
  2169.     return 1.5 * lerp(sz, c, d); /* interpolate in z */
  2170. }
  2171.  
  2172. static init()
  2173. {
  2174.     long random();
  2175.     int i, j, k;
  2176.     float v[3], s;
  2177.  
  2178. /* Create an array of random gradient vectors uniformly on the unit sphere */
  2179.  
  2180.     srandom(1);
  2181.     for (i = 0 ; i < B ; i++) {
  2182.         do {                            /* Choose uniformly in a cube */
  2183.             for (j=0 ; j<3 ; j++)
  2184.                 v[j] = (float)((random() % (B + B)) - B) / B;
  2185.             s = DOT(v,v);
  2186.         } while (s > 1.0);              /* If not in sphere try again */
  2187.         s = sqrt(s);
  2188.         for (j = 0 ; j < 3 ; j++)       /* Else normalize */
  2189.             g[i][j] = v[j] / s;
  2190.     }
  2191.  
  2192. /* Create a pseudorandom permutation of [1..B] */
  2193.  
  2194.     for (i = 0 ; i < B ; i++)
  2195.         p[i] = i;
  2196.     for (i = B ; i > 0 ; i -= 2) {
  2197.         k = p[i];
  2198.         p[i] = p[j = random() % B];
  2199.         p[j] = k;
  2200.     }
  2201.  
  2202. /* Extend g and p arrays to allow for faster indexing */
  2203.  
  2204.     for (i = 0 ; i < B + 2 ; i++) {
  2205.         p[B + i] = p[i];
  2206.         for (j = 0 ; j < 3 ; j++)
  2207.             g[B + i][j] = g[i][j];
  2208.     }
  2209. }
  2210.  
  2211. -------------------------------------------------------------------------------
  2212.  
  2213. Ray Tracing Research Ideas, by Klaus Lisberg Kristensen <lisberg@daimi.aau.dk>
  2214.     & Christian Gautier
  2215.  
  2216. [Some of these ideas have already been researched a bit, some ideas I don't
  2217. understand, but I thought I'd pass on the list. -EAH]
  2218.  
  2219. We put a request out for research topics in ray tracing.  We have received a
  2220. lot of good ideas, articles etc., and we are now going through all of them.
  2221.  
  2222. The areas suggested are (in very short terms):
  2223.  
  2224. - Methods to model the colors using spectral curves for the light sources.
  2225.   This could help problems like color-aliasing and machine dependency.
  2226.  
  2227. - Modelling reflections from oil in a water puddle, turbulent water stream,
  2228.   human bodies(or dinosaurs :)) by modelling every muscle.
  2229.  
  2230. - Modelling dirt was suggested by several people.
  2231.  
  2232. - Alternative ray-tracing methods.
  2233.  
  2234. - Non-realistic rendering.
  2235.  
  2236. - Don Mitchell's interval arithmetic approach to intersection.
  2237.  
  2238. - A memory-efficient algorithm for discrete ray-tracing.
  2239.  
  2240. - Radiosity simulation by stochastic ray-tracing.
  2241.  
  2242. - Optically correct lens emulators.
  2243.  
  2244. - Modelling clouds, misty nights or a river in the mountains.
  2245.  
  2246.  
  2247. -------------------------------------------------------------------------------
  2248.  
  2249. POV-Ray Utilities, by Dan Farmer (70703.1632@CompuServe.COM)
  2250.  
  2251. (This listing is about a year out-of-date)
  2252.  
  2253. [I thought I would include this old list to give a sense of the support out
  2254. there for POV.  There's lots more out there than just this - anyone with a
  2255. current list, please do send it on.  -EAH]
  2256.  
  2257. Object Creation Utilities
  2258. -------------------------
  2259. CHAIN101.ZIP = Chain generator.
  2260. CHEMCONV.ZIP = Convert data from Larry Puhl's CHEM molecular modeller.
  2261. CM.ZIP       = CircleMaster - Truman Brown - allows you to create clipped
  2262.                spheres and ellipses that can cap your hyperboloids of two
  2263.                sheets perfectly giving the illusion of quartic blobs.
  2264. WORM02.ZIP   = Paint with spheres to generate points for CTDS.
  2265. CTDS.ZIP     = Connect The Dots Smoother - Truman Brown.  Raytrace sources.
  2266.                makes your WORM output POV compatible.  Writes a file using
  2267.                the WORM data, with your choice of spheres or ellipsoids, and
  2268.                will either connect the spheres with cones and cylinders, or
  2269.                just output the "dots."
  2270. FONT2DAT.ZIP = Converts GRASP .fnt and .set font files to POV-Ray text.
  2271.                Fonts included.
  2272. FRGEN13.ZIP  = Midsection triangular displacement fractal surface generator. 
  2273. LISS152.ZIP  = Generate 3D Lissajous traces with spheres.
  2274. LISSAJ.ZIP   = Another Lissajous path generator, w/graphics preview. 
  2275. PICKSHEL.ZIP = Make snail shells from spheres.
  2276. POVCOIL2.ZIP = Hard to describe twisted coil objects.  POV Sources 
  2277. POVTORUS.ZIP = Makes torus-like objects using cylindrical sections. SHADE1.ZIP
  2278.   = "Lampshade" generator.
  2279. SPIKE.ZIP    = Generate shapes with radial projection.
  2280. SPRING12.ZIP = Generates and animates springs.
  2281. SUDS.ZIP     = Generates a "glob" of tangent spheres, rather like suds. 
  2282. TTG.ZIP      = Creates POV-Ray torus data, the easy way - Truman Brown 
  2283. TWISTER.ZIP  = Twisted objects such as Archimedes spirals.
  2284. SWOOP.ZIP    = Hard to describe extrusion generator.  Very versatile.
  2285.  
  2286. Miscellaneous Utilities
  2287. -----------------------
  2288. CRNDR        = CRENDER
  2289.                allows you to drop in and design that elusive color/lighting
  2290.                combination that you are looking for - it shines when it
  2291.                comes to designing just the right surface qualities.  Lets
  2292.                you interactively play with many texture variables and see
  2293.                them rendered almost instantly on screen, then dump the
  2294.                texture to a POV file.  Highly recommended for learning about
  2295.                textures.  POV sources.
  2296. MAKETILE.ZIP = Actually a PICLAB script.  Great for making imagemaps. 
  2297. SPLITPOV.ZIP = Run a POV-Ray image in sections on multiple computers
  2298.                and glue them back together automatically.  Best
  2299.                for use over a network.  Generates batchfiles.
  2300. TCE201  .ZIP = The Color Editor - Dan Farmer.  A color viewer/editor.
  2301.                Create/edit your colors.inc file.
  2302.  
  2303. Animation Utilities
  2304. -------------------
  2305. ACCEL.ZIP    = Generate acceleration data for use in an animation.
  2306.  
  2307. ANIMK05B.ZIP = Excellent animation generator.
  2308.  
  2309. CAMPATH1.ZIP = Generate circular, lemniscate, polar, and other camera path 
  2310. data.
  2311.  
  2312. RTAG.ZIP     = Special animation language (shareware)
  2313.  
  2314. ANIBATCH.ZIP = Simple linear motion, generates a single batch file that 
  2315. creates frame data at runtime.
  2316.  
  2317.  
  2318. AWK scripts for various data conversion and object generation
  2319. -------------------------------------------------------------
  2320. AWKBLOB.AWK = Converts raw sphere data in the form of x y z r into blob
  2321. components for POV-Ray. 
  2322.  
  2323. HSM2POV.AWK = Convert data from Mira Imaging's "Hyperspace" format to
  2324. POV-Ray triangle data. 
  2325.  
  2326. HSM2RAW.AWK = Convert data from Mira Imaging's "Hyperspace" format to raw
  2327. triangle data. By adding a sphere radius to the output vector and running
  2328. the output through AWKBLOB.AWK, you could also convert "Hyperspace" data
  2329. to blobs. 
  2330.  
  2331. Data Conversion Utilities
  2332. -------------------------
  2333. RAW2POV.ZIP  = Steve Anger - raw triangle vector data to well-bounded
  2334. POV-Ray format as either normal, or Phong-shaded triangles.  Very useful
  2335. with other programs, but it doesn't really do anything by itself. 
  2336. 3DS2POV.ZIP  = AutoDesk 3D-Studio ASCII data to POV-Ray files.
  2337. 3D2POV15.ZIP = Amiga Sculpt3D to POV-Ray format.
  2338. 3D2-POV      = Cyber Sculpt (Atari) 3D2 files.
  2339. DXF2POV.ZIP  = AutoCAD and other DXF file data to POV-Ray files.
  2340. SA2POV.ZIP   = Sculpt-Animate data to POV-Ray files.
  2341. SNDPPR.ZIP   = raw triangle data to Phong-shaded.
  2342. VCAD2POV.ZIP = Versa-CAD to POV-Ray.
  2343.  
  2344. As I mentioned above, this listing is old, and is very definitely only a 
  2345. sampler of what is available.  Almost all of these are free, the rest are 
  2346. inexpensive shareware.  Most are available on CIS (GO GRAPHDEV), YCCMR BBS 
  2347. (Chicago. (708) 358-5611, or TGA BBS (510) 524-2780 as well as many of the 
  2348. nodes of the PCGNet, of which TGA is a hub.
  2349.  
  2350. -------------------------------------------------------------------------------
  2351.  
  2352. SPD Platform/Compiler Results, by David Hook (dgh@ecr.mu.oz.au)
  2353.  
  2354. [many thanks to David and Bernie Kirby for running the SPD test on a variety
  2355. of platforms with various compiler options.  Most of you will be bored to
  2356. tears by this stuff, but I include it mostly so it gets archived somewhere.
  2357. The things that are most noticeable are how performance varies between
  2358. machines.  Also, Rayshade does everything in doubles and most of the other ray
  2359. tracers do everything in floats, so machines that can't or don't override the
  2360. double<->float conversions that C requires tend to take a hit on these others.
  2361. -EAH]
  2362.  
  2363. About the benchmarks run:
  2364.     a) The Standard Benchmarks are run using the best available
  2365.        NFF to <program> converter available. For example, this
  2366.        means that the awk script for rayshade was used as it 
  2367.        supplied a default grid of 22x22x22, where as the "other"
  2368.        converter didn't. The rational behind this is that if the
  2369.        rayshade people have it in their converter, then it is the
  2370.        preferred option.
  2371.  
  2372.     b) The "tweaked" benchmarks are run with various grids and with
  2373.        the ground or backing polygon removed thus:
  2374.         
  2375.            balls:  20x20x20        - take background out of grid structure.
  2376.            gears:  21x21x21        - take background out of grid structure.
  2377.            mount:  21x21x21
  2378.            rings:  21x21x21        - take background out of grid structure.
  2379.            teapot: 22x22x22        - The floor IS kept!
  2380.            tetra:  16x16x16
  2381.            tree:   21x21x21        - take background out of grid structure.
  2382.  
  2383.        These pertain only to the ART/rayshade results, where the tweaking
  2384.        could be easily done. I hate to be the one to say this, but, it
  2385.        looks as if in some cases this actually slows the renderer down.
  2386.  
  2387.        These results are presented in a separate table as it didn't
  2388.        seem realistic (or fair) to compare the different ray tracers
  2389.        by massaging the input files. In any case they are only relevant
  2390.        to balls, gears, rings, and tree. The figures for art using a 
  2391.        kdtree, where provided, indicate that taking the backing polygon
  2392.        out results in a nicely distributed data set in the subdivision
  2393.        and using a non-uniform subdivision is more a hindrance than a
  2394.        help (which is basically what you'd expect...).
  2395.  
  2396.        [There are art/kd results, where art uses a KD-tree for efficiency,
  2397.        and art/ug results, where art uses a uniform grid.  Both versions of
  2398.        the code are available on the net. -EAH]
  2399.  
  2400.     c) All programs are compiled with Maximum optimization/and appropriate
  2401.        floating point. In the case of Art/Vort/*/dp this means that the
  2402.        -float, -fsingle or whatever was not used but that everything was
  2403.        compiled with -Dfloat=double.
  2404.  
  2405.     d) The Bob/Vivid raytracer had its "robust" memory allocation
  2406.        scheme replaced with "standard" malloc's as the robust scheme caused
  2407.        core dumps on SGI and RS6000 machines.
  2408.  
  2409.     e) All Benchmarks include the time taken to read the scene in.
  2410.  
  2411.     f) All times are in CPU seconds.
  2412.  
  2413.     g) We don't own any SGI, RS6000 or HP machines. The use of these
  2414.        machines was kindly allowed by their respective owners/admins.
  2415.        As such, we couldn't run every raytracer as we were wearing
  2416.        out our welcome as it was.
  2417.  
  2418.     h) All runs were done to completion at 512x512 pixels.
  2419.  
  2420.     i) We DID try to run POV, but as it was taking over 24 hours of CPU
  2421.        time we simply had to stop.  Perhaps there is an NFF converter
  2422.        that inserts some bounding boxes automatically?
  2423.  
  2424.     j) Ratios calculated below for the Standard SPDs are done on the
  2425.        basis of Art/Vort/kd == the base line (it's the first in alphabetical
  2426.        order).
  2427.  
  2428.     k) In all cases we used the latest available versions of the software
  2429.        (hence the difference in Rtrace).
  2430.  
  2431. [I have added "*" after the fastest ratio for easy visual comparison. -EAH]
  2432.  
  2433.  
  2434.                 Standard SPDs
  2435.                 -------------
  2436. Machine: SGI PI.
  2437. ----------------
  2438.             balls    gears    mount    rings    teapot    tetra    tree
  2439. Art/Vort/kd        761.7    2296    414.6    1042    393.6    118.3    640.5
  2440. Art/Vort/ug        5958    1093    312.4    620.1    235.2    68    5761
  2441. Rayshade        2847    1950    899.5    1228    464    116    5602
  2442. Bob/Vivid        811    1369    446    1854    495    93.5    511
  2443. Rtrace8            1779    6236    2957    4840    1199    291    933
  2444.  
  2445. Ratios:
  2446. ------
  2447. Art/Vort/kd        1.0 *    1.0    1.0    1.0    1.0    1.0    1.0
  2448. Art/Vort/ug        7.8    0.47 *    0.75 *    0.6 *    0.6 *    0.57 *    8.99
  2449. Rayshade        3.7    0.85    2.17    1.18    1.18    0.98    8.75
  2450. Bob/Vivid        1.06    0.6     1.08    1.78    1.26    0.79    0.79 *
  2451. Rtrace8            2.33    2.71    7.13    4.64    3.05    2.45    1.46
  2452.  
  2453.  
  2454.  
  2455. Machine: IBM RS6000
  2456. -------------------
  2457.             balls    gears    mount    rings    teapot    tetra    tree
  2458. Art/Vort/kd        591.7    1847    325    812    334    107    534
  2459. Art/Vort/ug        3537    815    234    454    187    55    3215    
  2460. Rayshade        1410    846    406    548    230    70    2418
  2461. Bob/Vivid        506    909    309    1095    323    68    348
  2462. Rtrace8            861    4684    1414    2267    587    145    469
  2463.  
  2464. Ratios:
  2465. ------
  2466. Art/Vort/kd        1.0    1.0    1.0    1.0    1.0    1.0    1.0
  2467. Art/Vort/ug        5.98    0.44 *    0.72 *    0.56 *    0.56 *    0.51 *    6.02
  2468. Rayshade        2.38    0.46    1.25    0.67    0.68    0.65    4.53
  2469. Bob/Vivid        0.86 *    0.49    0.95    1.35    0.97    0.64    0.65 *
  2470. Rtrace8            1.45    2.54    4.35    2.79    1.76    1.35    0.88
  2471.  
  2472. Machine: SUN SPARCstation2
  2473. --------------------------
  2474.             balls    gears    mount    rings    teapot    tetra    tree
  2475. Art/Vort/kd        705    1900    389    951    369    112    574
  2476. Art/Vort/ug        5768    974    319    570    231    71    5327
  2477. Rayshade        2422    1309    671    940    366    106    4473
  2478. Bob/Vivid        715    1181    392    1419    412    87    429.6
  2479. Rtrace8            1084    3151    1991    2950    765    204    573
  2480.  
  2481. Ratios:
  2482. -------
  2483.             balls    gears    mount    rings    teapot    tetra    tree
  2484. Art/Vort/kd        1.0 *    1.0    1.0    1.0    1.0    1.0    1.0
  2485. Art/Vort/ug        8.18    0.51 *    0.82 *    0.6 *    0.62 *    0.63 *    9.28
  2486. Rayshade        3.43    0.69    1.72    0.99    0.99    0.95    7.8
  2487. Bob/Vivid        1.01    0.62    1.01    1.49    1.11    0.78    0.75 *
  2488. Rtrace8            1.54    1.66    5.12    3.10    2.07    1.82    0.99
  2489.  
  2490.  
  2491. Machine: HP 720
  2492. ---------------
  2493.             balls    gears    mount    rings    teapot    tetra    tree
  2494. Art/Vort/kd        308    915    156    400    155    58.1    252
  2495. Rayshade        870    507    203    292    122    41.7    2079
  2496.  
  2497. Ratios:
  2498. -------
  2499.             balls    gears    mount    rings    teapot    tetra    tree
  2500. Art/Vort/kd        1.0 *    1.0    1.0 *    1.0    1.0    1.0    1.0 *
  2501. Rayshade        2.82    0.55 *    1.3    0.73 *    0.78 *    0.72 *    8.25
  2502.  
  2503.  
  2504.  
  2505.             
  2506.  
  2507.                 Tweaked SPDs
  2508.                 ------------
  2509.  
  2510. In cases where xxx appears, for one reason or another, we were unable to
  2511. run the benchmark. 
  2512.  
  2513. Machine: SGI PI.
  2514. ----------------
  2515.             balls    gears    mount    rings    teapot    tetra    tree
  2516. Art/Vort/ug/twk        208.4    1259    312.3    478.3    334.1    67.9    97.8
  2517. Rayshade/twk        377.7    2647    937    877    548    141    171
  2518.  
  2519. Ratios:
  2520. ------
  2521. Art/Vort/ug/twk        1.0 *      1.0 *    1.0 *    1.0 *      1.0 *     1.0 *    1.0 *
  2522. Rayshade/twk        1.8    2.1     3.00    1.83    1.64    2.07    1.75
  2523.  
  2524.  
  2525.  
  2526. Machine: IBM RS6000
  2527. -------------------
  2528.             balls    gears    mount    rings    teapot    tetra    tree
  2529. Art/Vort/kd/twk        353    1970.5    333.7    739.6    423.7    56.5    111.1
  2530. Art/Vort/ug/twk        153.4    887    238    352    269    56    75
  2531. Rayshade/twk        183    1078    407    428    292    88    88
  2532.  
  2533. Ratios:
  2534. ------
  2535. Art/Vort/kd/twk        1.0      1.0    1.0    1.0    1.0    1.0    1.0
  2536. Art/Vort/ug/twk        0.43 *    0.45 *    0.71 *    0.48 *    0.63 *    1.0 *    0.67 *
  2537. Rayshade/twk        0.52    0.55    1.22    0.58    0.68    1.56    0.79
  2538.  
  2539.  
  2540. Machine: SUN SPARCstation2
  2541. -------------------
  2542.             balls    gears    mount    rings    teapot    tetra    tree
  2543. Art/Vort/kd/twk        417    2130    389    846    369    112    128
  2544. Art/Vort/ug/twk        202    1081    319    436    366    72    103
  2545. Rayshade/twk        293    1635    675    750    467    130    148
  2546.  
  2547. Ratios:
  2548. -------
  2549.             balls    gears    mount    rings    teapot    tetra    tree
  2550. Art/Vort/kd/twk        1.0    1.0    1.0    1.0    1.0    1.0    1.00
  2551. Art/Vort/ug/twk        0.48 *    0.51 *    0.89 *    0.51 *    0.99 *    0.64 *    0.80 *
  2552. Rayshade/twk        0.70    0.77    1.74    0.89    1.27    1.16    1.16
  2553.  
  2554.  
  2555. Machine: HP 720
  2556. ---------------
  2557.             balls    gears    mount    rings    teapot    tetra    tree
  2558. Art/Vort/kd/twk        186    1029    156    xxx    155    58.1    91
  2559. Art/Vort/ug/twk        89    527     xxx    168    138.7    41.4    39.7
  2560. Rayshade/twk        99    676    202    237    161    51.4    51.2
  2561.  
  2562. Ratios:
  2563. -------
  2564.             balls    gears    mount    rings    teapot    tetra    tree
  2565. Art/Vort/kd/twk        1.0    1.0    1.0    xxx    1.0    1.0    1.0
  2566. Art/Vort/ug/twk        0.48 *    0.51 *    xxx    1.0 *    0.89 *     0.70 *    0.42 * 
  2567. Rayshade/twk        0.53    0.65    1.29     1.41    0.96    0.88    0.56
  2568.  
  2569.  
  2570. [My figures do not seem to match these that well:  in my tests on the HP 720
  2571. Rayshade seemed to always outperform art.  We're not sure why there's a
  2572. mismatch. -EAH]
  2573.  
  2574.             *  *  *  *  *  *  *  *  *
  2575.  
  2576.             A comparison of float vs. doubles
  2577.         where float promotion to double can be disabled.
  2578.  
  2579.         As art seems to be the only one that declares most
  2580.         things as floats, this is the subject of these runs.
  2581.  
  2582. Machine: SGI PI.
  2583. ----------------
  2584.     Option: Single precision -float
  2585.             Double precision -Dfloat=double
  2586.  
  2587.             balls    gears    mount    rings    teapot    tetra    tree
  2588. Art/Vort/kd        761.7    2296    414.6    1042    393.6    118.3    640.5
  2589. Art/Vort/kd/dp        978    3000    xxxx    1365    520    152    777
  2590.  
  2591. Art/Vort/ug/twk        208.4    1259    312.3    478.3    334.1    67.9    97.8
  2592. Art/Vort/ug/twk/dp    295    1882    449    681    514    109    141
  2593.  
  2594. Ratios:
  2595. ------
  2596. Art/Vort/kd        1.0    1.0    1.0    1.0    1.0    1.0    1.0
  2597. Art/Vort/kd/dp        1.28    1.3     ....    1.3    1.32    1.27    1.21
  2598.  
  2599. Art/Vort/ug/twk        1.0      1.0    1.0    1.0    1.0    1.0    1.0
  2600. Art/Vort/ug/twk/dp    1.4    1.49    1.43    1.42    1.53    1.6    1.44
  2601.  
  2602.  
  2603. Machine: IBM RS6000
  2604. -------------------
  2605.     No such option. The times were much the same.
  2606.  
  2607.  
  2608. Machine: SUN SPARCstation2
  2609. -------------------
  2610.     Option: Single precision -fsingle
  2611.             Double precision -Dfloat=double
  2612.  
  2613.             balls    gears    mount    rings    teapot    tetra    tree
  2614. Art/Vort/kd        705    1900    389    951    369    112    574
  2615. Art/Vort/kd/dp        791    xxx    413    1034    428    127    625
  2616.  
  2617. Art/Vort/ug/twk        202    1081    319    436    366    72    103
  2618. Art/Vort/ug/twk/dp    214    1219    341    476    1027    78    114
  2619.  
  2620. Ratios:
  2621. -------
  2622.             balls    gears    mount    rings    teapot    tetra    tree
  2623. Art/Vort/kd        1.0    1.0    1.0    1.0    1.0    1.0    1.0
  2624. Art/Vort/kd/dp        1.12    xxx    1.06    1.08    1.16    1.13    1.08
  2625.  
  2626. Art/Vort/ug/twk        1.0    1.11    1.0    1.0    1.58    1.01    1.0
  2627. Art/Vort/ug/twk/dp    1.06    1.13    1.07    1.09    2.8    1.08    1.1
  2628.  
  2629.  
  2630. Machine: HP 720
  2631. ---------------
  2632.     Option: Single precision +f
  2633.             Double precision -Dfloat=double
  2634.     
  2635.             balls    gears    mount    rings    teapot    tetra    tree
  2636. Art/Vort/kd        308    915    156    400    155    58.1    252
  2637. Art/Vort/kd/dp        300    926    138    390    155    60.3    244
  2638.  
  2639. Art/Vort/ug/twk        89    527    xxx    168    139    41.4    39.7
  2640. Art/Vort/ug/twk/dp    117    560    xxx    234    168    43.1    46
  2641.  
  2642. Ratios:
  2643. -------
  2644.             balls    gears    mount    rings    teapot    tetra    tree
  2645. Art/Vort/kd        1.0     1.0     1.0    1.0    1.0    1.0    1.0
  2646. Art/Vort/kd/dp        0.97    1.01    0.88    0.975    1.0    1.03    0.97
  2647.  
  2648. Art/Vort/ug/twk        1.0    1.0    xxx    1.0    1.0    1.0    1.0 
  2649. Art/Vort/ug/twk/dp    1.31    1.06    xxx    1.39    1.2    1.04    1.15
  2650.  
  2651. -------------------------------------------------------------------------------
  2652. END OF RTNEWS
  2653.